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

Apache worker mpm, один процесс и много потоков: понимание производительности

Получил серверную программу, написанную на mod_perl. Я использую общую память apache worker mpm только с одним процессом и ~ 60 потоками. Я использую блокировки для временной защиты доступа к разделяемой памяти, хотя время блокировки составляет всего 0,1 с из 1,7.

Проблема в том, что я получаю ту же скорость на 10 последовательных запросах по сравнению с 10 параллельными запросами.

мой стресс-скрипт запускается п количество тяжелых URL-запросов с задержкой 0,1 с между каждым. Число в скобках - это номер запроса.

perl stressTestServer.pl n=1
DONE  ( 0 ) > 1.778257 sek 

perl stressTestServer.pl n=5
DONE  ( 3 ) > 8.71926 sek 
DONE  ( 0 ) > 8.85207 sek 
DONE  ( 1 ) > 8.976061 sek 
DONE  ( 4 ) > 9.119936 sek 
DONE  ( 2 ) > 9.218552 sek 

perl stressTestServer.pl n=10
DONE  ( 9 ) > 8.840539 sek 
DONE  ( 7 ) > 9.130133 sek 
DONE  ( 8 ) > 9.271598 sek 
DONE  ( 6 ) > 9.873936 sek 
DONE  ( 5 ) > 10.02668 sek 
DONE  ( 4 ) > 18.169001 sek 
DONE  ( 3 ) > 18.432776 sek 
DONE  ( 2 ) > 18.617186 sek 
DONE  ( 1 ) > 18.775277 sek 
DONE  ( 0 ) > 18.821972 sek 

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

tx для ввода!