Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Проблема при >1500 одновременных коннектов.
On Tue, Feb 10, 2009 at 09:25:59PM +0100, Valery Kholodkov wrote:
> Михаил Монашёв wrote:
> >Здравствуйте, Валерий.
> >
> >>>В> X-воркеров на N-дисков + хитрый балансировщик, который знает где
> >>>В> какие файлы лежат - сложно все это. Самое лучшее, конечно, это если
> >>>В> бы в nginx появился полноценный aio.
> >>>
> >>>Это тоже не панацея. Ибо там тоже есть свои ограничения и aio - борьба
> >>>с симптомами, а не с болезнью. Единственное чем оно полезно - не нужно
> >>>иметь 1000 воркеров, что немного экономит память.
> >
> >VK> Можно подробней про ограничения aio?
> >
> >Лучше у Игоря спросить, а то я боюсь стать испорченным телефоном.
>
> Игорь?
Я могу сказать про FreeBSD. Для aio обычных файлов там используются
вспомогательные ядерные процессы/трэды aiod.
В 6ке:
819 ?? DLs 0:00.79 [aiod0]
820 ?? DLs 0:00.79 [aiod1]
821 ?? DLs 0:00.79 [aiod2]
822 ?? DLs 0:00.81 [aiod3]
В 7ке:
8 ?? DL 0:00.00 [aiod_bio taskq]
Настраивается всё дело с помощью:
vfs.aio.max_aio_queue: 1024
vfs.aio.max_aio_queue_per_proc: 256
vfs.aio.max_aio_procs: 32
vfs.aio.max_aio_per_proc: 32
Когда очередь кончается, возвращается EAGAIN и придётся работать, как
обычно (ну или выдавать 503). То есть, по сути всё ожидание переносится
в ядерные процессы и не факт, что оно будет существенно лучше. Но сами
воркеры будут блокироваться меньше и данные, доступные в памяти будут
уходит быстро. Нужно, конечно, пробовать.
--
Игорь Сысоев
http://sysoev.ru
|