Не работает upstream keepalive в связке с fastcgi-c бэкэндом

Helg nginx-forum at nginx.us
Sat Dec 21 20:59:45 UTC 2013


Здравствуйте.

У меня не работает upstream keepalive в связке с fastcgi-c бэкэндом.

libfcgi - 2.4
nginx - 1.4.1, 1.5.8
Ubuntu 13.10 x64

Конфиг ngnix`а сделан по документации:

upstream test {
    server 127.0.0.1:12000;

    keepalive 32;
}

location / {
    access_log off;
    error_log  /var/log/nginx/error.log;

    allow all;
    fastcgi_keep_conn on;
    fastcgi_pass test;
    include fastcgi_params;
}


Тестирую просто:
ab -T application/octet-stream -k -n 10000 -c 1 "http://test.local/"


Если закомментировать "keepalive 32" то все работает отлично. Но на каждый
запрос создается новое соединение. Это отлично видно по netstat -an | grep
12000
Если же оставить так как выше, то через 5-10 тысяч запросов ab подвисает и
отваливается по таймауту. И больше ни одного запроса к бэкэкнду не доходит,
до рестарта бэкэнда или nginx.

Бэкэнд прост как лапоть (написан с помощью libfcgi):


#include "fcgi_stdio.h"
#include <stdlib.h>

int count;

int main()
{
  count=0;

  while (FCGI_Accept() >= 0)   {
    printf("Content-type: application/octet-stream\nContent-length: %u\n\n",
0);
  }

  return 0;
}

Вроде тут виснуть нечему. Но виснет.
Подскажите, может стакливались с таким? Как чинить. И как
продиагностировать, в чем именно проблема?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,245757,245757#msg-245757



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