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

Ресурсы ЦП, памяти, сети, ввода-вывода используются недостаточно, когда я пробовал различные нагрузочные тесты JMeter.

Я пытаюсь оценить производительность своего веб-сервера с Linux и Apache. Я попробовал нагрузочное тестирование с помощью JMeter и постепенно увеличивал количество запросов и записывал время ответа, а также статистику использования ресурсов. Время отклика увеличилось после 40 ударов в минуту, однако использование ресурсов осталось прежним! Ресурсы ЦП, памяти, сети, ввода-вывода использовались недостаточно, даже когда я пробовал много запросов, что приводило к медленному времени отклика. Если быть точным, время ответа было хорошим, когда общее количество запросов в минуту было менее 6000, а когда мы опробовали 8000 запросов в минуту, время ответа увеличилось на 50%.

Info of the server:
Hardware: 1 Core with 2 GB RAM
OS: Ubuntu 12.04 LTS Server Edition

.

Application stack:
Apache, PHP

Конфигурация Apache с количеством клиентов:

<IfModule mpm_prefork_module>
    StartServers          50
    MinSpareServers       50
    MaxSpareServers      100
    MaxServers           600
    MaxClients           600
    MaxRequestsPerChild   0
</IfModule>

Мне непонятно, почему эти ресурсы используются недостаточно. Не могли бы вы помочь мне, что мне делать, чтобы я мог использовать рост использования ресурсов?

Вот важная часть конфигурации apache:

LockFile ${APACHE_LOCK_DIR}/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 5

<IfModule mpm_prefork_module>
    StartServers         50
    MinSpareServers      50
    MaxSpareServers     100
    ServerLimit         600
    MaxClients          600
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_event_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

DefaultType None
HostnameLookups Off

Include mods-enabled/*.load
Include mods-enabled/*.conf
Include httpd.conf
Include ports.conf

Include conf.d/
Include sites-enabled/

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

Также попробуйте увеличить значения для MaxServers и MaxClients чтобы вы не попали в узкое место. Вы можете проверить то же самое, попадаете ли вы в узкое место по количеству процессов, используя эту команду

 # watch "ps ax | grep -http | wc -l"

Если оно близко к 600, вам нужно увеличить их значение, чтобы вы могли продолжить стресс-тестирование. Это также объясняет не увеличивающуюся нагрузку, потому что ваши соединения ждут, пока сервер освободится от предыдущих соединений.

Кроме того, я рекомендую отключить время поддержания активности (не уверен, отключено ли оно уже), чтобы вы могли получить более реальные результаты.

Производительность Apache может быть ограничена количеством доступных дескрипторов файлов и процессов. Эта статья может помочь: http://www.webperformance.com/load-testing/blog/2012/12/setting-apache2-ulimit-for-maximum-prefork-performance/

(отказ от ответственности: я работаю с автором)