Il giorno 20/set/2010, alle ore 15.09, Jean-Baptiste Quenot ha scritto: > 2010/9/16 Jean-Baptiste Quenot <[email protected]>: > >> I will switch to TCP sockets, to see if the problem comes from the BSD >> socket backlog queue implementation. >> >> Then at least if the problem persists I'll be able to test your >> suggestion to print statistics of the request queue. > > It's still failing with TCP sockets. I post again all facts so that > we can find a solution: > > On one specific host, the 19th of september, 27 requests failed out of > 955185. Here are an example entry in haproxy logs: > > Sep 19 21:28:43 ws haproxy[16613]: 127.0.0.1:38847 > [19/Sep/2010:21:28:13.683] fe be 0/0/0/-1/30002 504 1425 - - sH-- > 2/1/1/1/0 0/0 {website.com} "GET / HTTP/1.1" > > Some explanations from this log entry: > > * 0/0/0/-1/30000 504 indicates that the request timed out after 30 > seconds, which is the haproxy timeout > * sH indicates that the timeout was reached while waiting for the > server to send valid response headers > * 6/3/3/0/0 indicates that there were 3 connections to the backend > upon request termination > > Now the nginx logs: > > Sep 19 21:28:43 ws nginx: 127.0.0.1 - 0 30.002 "GET / HTTP/1.1" 200 0 > > * again we see the 30 seconds elapsed > * we see the correct status code 200 > * 0 bytes were written to the response > > This is nginx 0.8.49 on Ubuntu 9.04 running on a host with 4 CPU, and > uwsgi 0.9.6 with "better handling of subprocesses" patch. > > The command line is: > > /usr/bin/uwsgi -l 256 -b 25000 -M -t 29 -s 127.0.0.1:25556 -A1 > --pidfile /var/run/app.pid --pythonpath /app -w server -i -p 8 -d > /var/run/app.out -L > > I don't believe requests are stuck in the backlog queue because I can > see the right status code in nginx logs. The problem can be > reproduced with both BSD and TCP sockets. > > NOTE: the colon between host and port is replaced with a space in "ps" output >
It still could be an overload problem, we have no way (for now) to know the time between nginx connect() and uwsgi accept(). I do not know if the TCP_INFO feature added to 0.9.7 could be useful. I will try to make a patch to let you test the status of connections in real time (remember that only TCP mode is supported) -- Roberto De Ioris http://unbit.it JID: [email protected] _______________________________________________ uWSGI mailing list [email protected] http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi
