ПРОЕКТЫ 


  АРХИВ 


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: Re[2]: fastcgi performance at 10K



Hello!

On Sat, Apr 18, 2009 at 02:43:24PM +0400, Sergey Shepelev wrote:

> Может лучше писать HTTP бекенды вместо FastCGI?

JFYI: для http'шных бекендов keepalive пока ещё не поддерживается.

Maxim Dounin

> 
> 2009/4/17 Denis F. Latypoff <denis@xxxxxxxxxx>:
> > Hello Maxim,
> >
> > Saturday, April 18, 2009, 12:38:42 AM, you wrote:
> >
> >> Hello!
> >
> >> On Fri, Apr 17, 2009 at 11:48:08PM +0700, Denis F. Latypoff wrote:
> >
> >>> Hello Maxim,
> >>>
> >>> Thursday, April 16, 2009, 1:23:11 AM, you wrote:
> >>>
> >>> > Hello!
> >>>
> >>> > On Wed, Apr 15, 2009 at 01:09:30PM +0100, Valery Kholodkov wrote:
> >>>
> >>> >>
> >>> >> ----- "Maxim Dounin" <mdounin@xxxxxxxxxx> wrote:
> >>> >>
> >>> >> > У меня есть работающий прототип поддержки keepalive для fastcgi.
> >>> >> > Если очень хочется потестировать - могу поделиться патчами.
> >>> >> >
> >>> >> > Но надо понимать что на сколько-нибудь тяжёлых fastcgi запросах
> >>> >> > это не приведёт к заметному ускорению, и описанные проблемы скорее
> >>> >> > всего не вылечит (а может быть и усугубит).
> >>> >>
> >>> >> Вне зависимости от того, кто что про это думает, код в студию!
> >>>
> >>> > Патчи прилагаются, накладывать по очереди:
> >>>
> >>> > patch-nginx-proxy-flush-2.txt
> >>> > patch-nginx-proxy-length-2.txt
> >>> > patch-nginx-keepalive.txt
> >>>
> >>> > Всё должно нормально накладываться на 0.7.51.  Первые два патча
> >>> > уже публиковались ранее, и вообще сами по себе полезные.  Третий
> >>> > грязненький, но я честно предупреждал что это лишь прототип.  :)
> >>>
> >>> > Использовать вместе со свежей версией ngx_http_upstream_keepalive,
> >>> > берут тут:
> >>>
> >>> > http://mdounin.ru/hg/ngx_http_upstream_keepalive/
> >>>
> >>> > При этом при сборке nginx'а надо определить
> >>> > NGX_UPSTREAM_KEEPALIVE_PATCHED, иначе работать будет как раньше
> >>> > (т.е. применимо только для memcached'а).  Как-то так:
> >>>
> >>> > ./configure --with-cc-opt="-D NGX_UPSTREAM_KEEPALIVE_PATCHED" > >>> >     --add-module=/path/to/ngx_http_upstream_keepalive
> >>>
> >>> > Maxim Dounin
> >>>
> >>> это моё (время в GMT):
> >>>
> >>> [16:37:27] [debug] app_server.c:278:server_accept(): [21] accepted from 
> >>> 192.168.61.30
> >>> [16:37:27] [debug] socket.c:83:socket_non_block(): [21] set NONBLOCK
> >>> [16:37:27] [debug] app_server.c:77:app_server_read(): [21] read 1344 bytes
> >>> [16:37:27] [debug] app_server.c:99:app_server_read(): [21] recv(): 
> >>> Resource temporarily unavailable
> >>> [16:37:27] [debug] fastcgi.c:617:fastcgi_request(): FASTCGI_VERSION: 1
> >>> [16:37:27] [debug] fastcgi.c:637:fastcgi_request(): FASTCGI_TYPE: 
> >>> FASTCGI_BEGIN_REQUEST
> >>> [16:37:27] [debug] fastcgi.c:664:fastcgi_request(): 
> >>> FASTCGI_REQUEST_ID_HI: 0
> >>> [16:37:27] [debug] fastcgi.c:673:fastcgi_request(): 
> >>> FASTCGI_REQUEST_ID_LO: 1
> >>> [16:37:27] [debug] fastcgi.c:692:fastcgi_request(): 
> >>> FASTCGI_CONTENT_LENGTH_HI: 0
> >>> [16:37:27] [debug] fastcgi.c:701:fastcgi_request(): 
> >>> FASTCGI_CONTENT_LENGTH_LO: 8
> >>> [16:37:27] [debug] fastcgi.c:710:fastcgi_request(): 
> >>> FASTCGI_PADDING_LENGTH: 0
> >>> [16:37:27] [debug] fastcgi.c:719:fastcgi_request(): FASTCGI_RESERVED: 0
> >>> [16:37:27] [debug] fastcgi.c:761:fastcgi_request(): FASTCGI_DATA: 8 bytes 
> >>> left
> >>> [16:37:27] [debug] fastcgi.c:151:fastcgi_process_begin_request(): 
> >>> FASTCGI_ROLE_HI: 0
> >>> [16:37:27] [debug] fastcgi.c:160:fastcgi_process_begin_request(): 
> >>> FASTCGI_ROLE_LO: 1
> >>> [16:37:27] [debug] fastcgi.c:184:fastcgi_process_begin_request(): 
> >>> FASTCGI_FLAGS: 1
> >>>
> >>> то бишь - FCGI_KEEP_CONN
> >>>
> >>> это nginx:
> >>>
> >>> 2009/04/17 23:37:27 [debug] 28959#0: *54 http writer done: "/game.json?"
> >>> 2009/04/17 23:37:27 [debug] 28959#0: *54 http finalize request: 0, 
> >>> "/game.json?"
> >>> 2009/04/17 23:37:27 [debug] 28959#0: *54 event timer del: 5: 3035726014
> >>> 2009/04/17 23:37:27 [debug] 28959#0: *54 set http keepalive handler
> >>> 2009/04/17 23:37:27 [debug] 28959#0: *54 http close request
> >>>
> >>> ну и в моем самопальном сервере:
> >>>
> >>> [16:37:27] [debug] server.c:182:server_write(): [21] written 16232
> >>> bytes of 16232
> >>>
> >>> дальше добавляю fd:21 в событие READ, якобы для следующего запроса и
> >>> получаю:
> >>>
> >>> [16:37:27] [notice] server.c:84:server_read(): [21] recv(): client
> >>> prematurely closed connection
> >>> [16:37:27] [debug] socket.c:72:socket_close(): [21] closed
> >
> >> Just for record:
> >
> >> Соединение закрыто nginx'ом, ибо не активирован upstream keepalive. Не
> >> забываем прописывать
> >
> >>     upstream {
> >>        server ...
> >>        keepalive <сколько надо>;
> >>     }
> >
> >> В README к ngx_http_upstream_keepalive всё написано с
> >> подробностями.
> >
> >> Ну и вообще говоря закрытое сервером соединение - это нормально,
> >> FCGI_KEEP_CONN как раз и говорит приложению что сервер это сделает
> >> сам когда надо будет.
> >
> > ага, учтем.
> >
> > в общем померялся,
> >
> > Ядро: 2.6.28.4
> > ДДОС: ab -k -c 10000 -n 500000 -p ./post.js (у мну отдавалка JSON)
> >
> > 1) Requests per second:    1726.60 [#/sec] (mean)
> > 2) Requests per second:    948.40 [#/sec] (mean)
> >
> > использовались три машины (досилка, nginx, и fastcgi)
> >
> > Предлагаю серьезно подумать над поддержкой keepalive для fastcgi.
> >
> >> Maxim Dounin
> >
> > --
> > Best regards,
> >  Denis                            mailto:denis@xxxxxxxxxx
> >
> >
> >



 




Copyright © Lexa Software, 1996-2009.