ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Ошибки при исполь зовании fastcgi



Igor Sysoev пишет:
On Tue, 25 Jan 2005, Andrew Velikoredchanin wrote:

Заметил еще такую вещь.
Если в параметре -c ставлю конкуретных запросов 6 или меньше - ошибок обычно нет. Если ставлю 7 или больше - ошибки идут стабильно.

Кроме того, отлеживая количество открытых соединений на этот токет заметил такую вещь. При -c 6 или меньше коннектов открыто стабильно 8 штук. Вот данные из proc:

Num       RefCount Protocol Flags    Type St Inode Path
cc52a800: 00000002 00000000 00010000 0001 01 1850203 /tmp/test1.sock
c46ed200: 00000004 00000000 00000000 0001 02     0 /tmp/test1.sock
c46ed080: 00000004 00000000 00000000 0001 02     0 /tmp/test1.sock
c4a43500: 00000004 00000000 00000000 0001 02     0 /tmp/test1.sock
c4a43200: 00000004 00000000 00000000 0001 02     0 /tmp/test1.sock
cc52a980: 00000004 00000000 00000000 0001 02     0 /tmp/test1.sock
c46edc80: 00000004 00000000 00000000 0001 02     0 /tmp/test1.sock
c46ed980: 00000002 00000000 00000000 0001 03 2366266 /tmp/test1.sock

Если я ставлю -c более 6, то обычно при отслеживании к-ва открытых сокетов видно либо один listen либо два типа вот таких:

Num       RefCount Protocol Flags    Type St Inode Path
cc52a800: 00000002 00000000 00010000 0001 01 1850203 /tmp/test1.sock
c27a3b00: 00000003 00000000 00000000 0001 03 2403087 /tmp/test1.sock

Закономерность довольно странная. Может это все-таки что-то не так при подключении?


Если запускать fastcgi через cgi-fcgi из FastCGI Developer's Kit (как
делалось в этом случае), то он выставляет listen backlog всего в пять
соединений и этот никак не настраивается, см. cgi-fcgi/cgi-fcgi.c:

-----------
static void FCGI_Start(char *bindPath, char *appPath, int nServers)
{
    int listenFd, i;

    /* @@@ Should be able to pick up the backlog as an arg */
    if((listenFd = OS_CreateLocalIpcFd(bindPath, 5)) == -1) {
        exit(OS_Errno);
    }

-----------

Аааа! Вон оно в чем дело!

Нужно подпачить хотя бы до текущего значения по умочанию в Линуксе: 128.
А ещё лучше поставить -1. Тогда хотя бы можно будет без пересборки
увеличить backlog системными настройками.

Поставил -1 - сразу стало намного лучше. Ошибки с кодом не 2хх практически исчезли.





 




Copyright © Lexa Software, 1996-2009.