Ресурсы ЦП, памяти, сети, ввода-вывода используются недостаточно, когда я пробовал различные нагрузочные тесты 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/

2 ответа

Во-первых, для тестирования вы должны использовать разные 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/

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

Другие вопросы по тегам