Назад | Перейти на главную страницу

lighttpd: рабочие SMP вызывают снижение производительности

Я пытаюсь повысить производительность своей системы lighttpd, используя SMP-воркеры для нескольких ядер. Оказывается, вместо повышения производительности он ухудшает ее. Кажется, я не понимаю, почему это так.

В документация ПРЕТЕНЗИИ о том, что он должен линейно масштабироваться с количеством ядер / процессоров, когда примерно вдвое больше рабочих SMP настроено как количество ядер. Я провел тестирование для соотношения основных ресурсов и рабочих 1:1 и 1:2.

Я сравниваю это с ab. В моей установке 4 виртуальных ядра.

Вот результаты теста, выполненного с небольшим размером документа

ab -n 10000 -c 50  http://localhost/index.html

1. Default(no smp workers)
   Requests per second:    3581.99 [#/sec] (mean)
   Time per request:       13.959 [ms] (mean)
   Time per request:       0.279 [ms] (mean, across all concurrent requests)
   Transfer rate:          1518.15 [Kbytes/sec] received

2. 8 SMP workers
   Requests per second:    2292.12 [#/sec] (mean)
   Time per request:       21.814 [ms] (mean)
   Time per request:       0.436 [ms] (mean, across all concurrent requests)
   Transfer rate:          971.46 [Kbytes/sec] received

3. 4 SMP workers
   Requests per second:    2510.13 [#/sec] (mean)
   Time per request:       19.919 [ms] (mean)
   Time per request:       0.398 [ms] (mean, across all concurrent requests)
   Transfer rate:          1063.86 [Kbytes/sec] received

Эти результаты имеют для меня смысл. Результаты легко воспроизводятся и на любой другой машине. Фактически, когда машина становится более мощной, эффект деградации становится более заметным. Любое объяснение?

Если у вас 4 ядра, то почему вы тестируете 8 потоков? Я бы пошел с 2,3,4 и 5

Вы запускаете ab на том же компьютере, что и веб-сервер. Перегоняли процессоры между ab и lighttpd? В противном случае они будут конкурировать за ЦП, если ваша нагрузка станет слишком высокой, процессы веб-сервера будут преждевременно выброшены из ЦП.

Попробуйте запустить ab на отдельном оборудовании.