Как nginx обрабатывает fastcgi запросы

ruslan usifov ruslan.usifov на gmail.com
Сб Авг 28 02:16:26 MSD 2010


Написал простейшее fcgi приложение, запускаеться так spawn-fcgi -s
/tmp/python-fcgi.sock -u www -g www -n -- /usr/local/bin/python
/root/test.py

import fastcgi;
import time;

def myapp(environ, start_response):
  write = start_response('200 OK', [('Content-Type', 'text/html;
charset=utf-8')]);
  lines = [];

  time.sleep(30);

  for k, v in environ.iteritems():
    lines.append("<b>%s</b>: %s<br />\n" % (k, v));

  return lines;

s = fastcgi.ForkingWSGIServer(myapp, 5);
s.serve_forever();

И запустил 6 параллельных запросов (http://app.test/), и с удивлением
обнаружил accept в fastcgi сервере не был вызван одноврменно 6 раз, а был
выполнен строго последовательно. Т.е запросы ушли параллельно а accepts
выполнились один за другим в результате последний 6-й запрос выполнялся не
30 секунд и 30*6 секунд. Собственно говоря вопрос почему так происходит?
Проверял apache mod_fastcgi поступает точно также.

Конфигурация nginx такая:

    server
    {
        listen 80;
        server_name app.test;

        location /
        {
            fastcgi_pass unix:/tmp/python-fcgi.sock;
            include      fastcgi_params;
        }
    }
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100828/9bc18a3f/attachment.html>


Подробная информация о списке рассылки nginx-ru