我正在使用 Nginx、Gunicorn 和 Django 设置 Django 服务器。我点击了此链接(https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04)。我的服务器开始正常工作,因为当我使用 Postman 或浏览器访问我的服务时,我得到了响应。我的 Nginx 文件看起来像这样
server {
listen 80;
server_name server_ip;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/frt/project/project/;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/frt/project/project/project.sock;
}
}
但是当我使用 JMeter 在此服务器上运行负载测试时,在将近 40% 的请求中,我收到“Bad Gateway”错误。我查看日志,下面是错误
2017/10/09 08:11:11 [error] 7777#7777: *3153 connect() to unix:/home/frt/project/project/project.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 192.168.23.83, server: 192.168.3.217, request: "GET /api/posts/ HTTP/1.1", upstream: "http://unix:/home/frt/project/project/project.sock:/api/posts/", host: "192.168.3.217"
我正在运行包含 3000 个线程和 30 秒加速时间的简单测试计划。
最佳答案
很可能您的应用程序根本无法处理负载,可能的原因太多了。
最明显的可能是:
- 缺乏资源(即 CPU 或 RAM)。我建议在被测应用程序端设置基线健康指标的监控,这样您就可以查看您的应用程序是否有足够的余量,以及错误或高响应时间或低吞吐量是否是由过高的内存消耗或交换引起的。参见 How to Monitor Your Server Health & Performance During a JMeter Load Test文章了解详情。
- 配置不当。检查您的
nginx.conf
文件并查看是否worker_rlimit_nofile
setting具有足够高的值(value)。参见 Tuning NGINX for Performance想要查询更多的信息。同样适用于 PostgreSQL database - Django 应用程序质量差(低效算法、内存中的大对象等)您可能需要使用 Python profiling tools在运行负载测试时查看内存/cpu 最密集的功能,看看可以做些什么来优化它们。
关于django - 连接到 Sock 文件失败。资源暂时不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46646326/