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