Apache работник MPM, один процесс и много потоков: понимание производительности
Получил написанную на mod_perl серверную программу. Я использую разделяемую рабочую память Apache MPM только с одним процессом, и ~ 60 потоков. Я использую блокировки для временной защиты доступа к общей памяти, хотя время блокировки составляет всего 0,1 с из 1,7 с.
Проблема в том, что я получаю одинаковую скорость при 10 последовательных запросах по сравнению с 10 одновременными запросами.
Мой стресс-скрипт запускает n сложных 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 для ввода!