Nginx – uWSGI TCP/IP host:port vs Unix socket

nginxsockettcpipunixuwsgi

We are running a Python WSGI server (uWSGI) and changed to socket file instead of a tcp/ip localhost:port connection.

Now our uwsgi logs are full of errors like

IOError: write error
SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) during GET /en/photos/?orientation... (ip ...) !!!
uwsgi_response_write_headers_do(): Broken pipe [core/writer.c line 296] during GET /en/photos/?orientation... (ip ...)

Changing back to localhost:port and no errors in the logs. The pages are loading with both configurations.

We would prefer Unix sockets because they are a little bit faster… Has anyone a clue what's causing this errors?

uwsgi.ini:

daemonize = /var/log/uwsgi/debug.log
module = project.wsgi:application

socket=127.0.0.1:1111

#socket = /tmp/tmp.sock
#chmod-socket = 666

master = true
vacuum = true

chdir=/var/www/...
pidfile=/tmp/project-master.pid

enable-threads = true
disable-logging = true

processes=6

nginx.conf

location / {
    uwsgi_read_timeout 300;
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:1111;
    #uwsgi_pass unix:/tmp/tmp.sock;
}

Best Answer

I have also met this question. My uwsgi log errors are like you, meanwhile I found there are alert logs in my nginx error log, like: "2017/05/16 18:09:33 [alert] 16405#0: 1024 worker_connections are not enough"

So I increased worker_connections to high value in nginx conf file.