django与nginx+;uwsgi
我正在nginx+uwsgi上尝试django。 它工作得非常好(比ApacheModu wsgi快),但是如果我有超过100个并发连接(即:用ab-N100000-C150测试), 我在uwsgi日志上发现了一些破损的管道: nginx.conf:django与nginx+;uwsgi,nginx,uwsgi,Nginx,Uwsgi,我正在nginx+uwsgi上尝试django。 它工作得非常好(比ApacheModu wsgi快),但是如果我有超过100个并发连接(即:用ab-N100000-C150测试), 我在uwsgi日志上发现了一些破损的管道: nginx.conf: user myuser; worker_processes 8; events { worker_connections 30000; } http { include mime.types; def
user myuser;
worker_processes 8;
events {
worker_connections 30000;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream django {
ip_hash;
server unix:/home/myuser/tmp/uwsgi.sock;
}
server {
listen 8081;
server_name localhost;
location / {
uwsgi_pass django;
include uwsgi_params;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
uwsgi是这样开始的:
/usr/local/bin/uwsgi -s /home/myuser/tmp/uwsgi.sock --pp /home/myuser/projects/django/est/nginx --module django_wsgi -L -l 500 -p 8
来自uwsgi的错误消息如下:
writev(): Broken pipe [plugins/python/wsgi_headers.c line 206]
write(): Broken pipe [plugins/python/wsgi_subhandler.c line 235]
版本为:nginx为1.0.6,uwsgi为0.9.9.2
您知道如何解决这些错误消息吗?150连接对于侦听队列为100的8个工作人员来说可能是一个过高的值。可能您只需要增加侦听队列。这显示在uWSGI主页(在基准测试部分下)我找到了解决方案, 问题不在uwsgi端,linux有一个限制:套接字有128个请求长,因此要扩大等待队列,您必须调整内核: 即:
即使这是一个旧的线程,我希望我能得到一个答案…你需要重新启动服务器或只是uwsgi进程来获取这个更改吗?
echo 3000 > /proc/sys/net/core/netdev_max_backlog
echo 3000 > /proc/sys/net/core/somaxconn