Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[2]: fastcgi performance at 10K
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
|