|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Igor Sysoev 2:5020/400 15 Nov 2005 18:45:20 To : Vadim Goncharov Subject : Re: httpd в ядре -------------------------------------------------------------------------------- Vadim Goncharov <vadimnuclight@tpu.ru> wrote: > On Tue, 15 Nov 2005 13:13:21 +0000 (UTC); Igor Sysoev wrote about 'Re: httpd в > ядре': В ядре есть одна полезная вещь - kqueue(2). Всё остальное меркнет перед > ней. Есть цифры, насколько оно лучше? Цифры можно посмотреть > здесь: http://people.freebsd.org/~jlemon/papers/kqueue.pdf а что касается > практики, то select() и poll() съедают весь процессор на паре тысяч > одновременных соединений, а kqueue спокойно работает на тридцати > тысячах. Съедают в одном процессе или суммарно на всем сервере? Если один > процесс работает с парой тысяч одновременных соединений в одном процессе, но > на всём сервере кончается процессор. А если это будут скажем 4 процесса по 500 > соединений? Если будет 10 процессов по 200 соединений, то будет легче. Есть у меня одна машина 3.4 с nginx'ом, использует select, 20 рабочих процессов, по 100-300 соедиений на процесс. > IS>>> Hа мой взгляд, http сервер в ядре может есть процессор максимум > IS>>> на пару дестяков процентов меньше, а вот проблемы с безопасностью > IS>>> и портированием на новую версию ядра могут быть большие. > IS>>> А для статики десятки процентов - это ничто, проще поставить ещё > IS>>> одну машину. > IS>>> И, кстати, in-kernel сервер вовсе не гарантирует скорость. > >>> Основная цель такого сервера - увеличить число обслуживаемых клиентов, а > >>> не скорость. > IS>> Число клиентов (соединений) упирается в > IS>> kern.ipc.nmbclusters > IS>> kern.ipc.maxsockets > IS>> kern.ipc.nsfbufs > >> Это число соединений. А их еще надо обслужить, и тут дизайн сервера > >> становится важен. > IS> Hу nginx, например, легко обслуживает тридцать тысяч одновременных > IS> соединений и две тысячи запросов в секунду на P3-650. user time 20%, > IS> system 40%. В ядре используется 60,000 сокетов. > > Hу а если бы он был в ядре - смог бы он это сделать еще лучше? :) Hа самом деле, в nginx есть ещё куда расти - кэширование открытых файлов и кэширование мелких файлов. А вынос в ядро добавит ещё 10% производительности, а геморрою - на все 1000%. > IS>> Вот их нужно уметь увеличивать так, чтобы машина не перегрузилась > IS>> во время работы (или даже загрузки). > >> Есть рекомендации по подбору оптимума? > IS> Hа одной машине 4.10 с 1G у меня стоит > IS> # 192M KVA > IS> kern.ipc.nmbclusters="65536" > IS> # 50M KVA > IS> kern.ipc.maxsockets="65536" > IS> # 120M KVA > IS> kern.ipc.nsfbufs="30720" > > IS> В сумме под сеть отдано около 360M KVA. При KVA_PAGES=256 (default), > IS> это, насколько я понимаю, максимум. Можно что-то уменьшить, и что-то > IS> увеличить, но в пределах 360M, смотря чего не хватает. > IS> Чтобы отдать больше 360M, нужно увеличивать KVA_PAGES. > > Что такое KVA и почему при дефолте 256 их отдано 360 ? Kernel Virtual Address space. 256 страниц по 4K, получается 1G. -- Игорь Сысоев http://sysoev.ru --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/6577af764cc8.html, оценка из 5, голосов 10
|