我正在尝试评估我的 Web 服务器的性能,该服务器具有 Linux 和 Apache。我尝试使用 JMeter 进行负载测试,并逐渐增加请求数量并记录响应时间以及资源利用率统计数据。响应时间在每分钟 40 次点击后增加,但资源利用率保持不变!即使我尝试大量请求,CPU、内存、网络、IO 资源也未得到充分利用,导致响应时间变慢。具体来说,当每分钟的总请求数低于 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 配置 wrt 客户端数量:
<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/
答案1
首先,您应该尝试不同的 URL 进行测试,而不只是一个,我相信您正在尝试。
MaxServers
另外,尝试增加和的值,MaxClients
以免遇到瓶颈。您可以使用以下命令检查是否遇到了进程数瓶颈
# watch "ps ax | grep -http | wc -l"
如果接近 600,则需要增加它们的值,以便进一步进行压力测试。这也解释了负载没有增加的原因,因为您的连接正在等待服务器从先前的连接中解放出来。
另外,我建议禁用保持活动时间(不确定是否已经禁用),以便您可以获得更真实的结果。
答案2
Apache 的性能可能受到可用文件句柄和进程数量的限制。本文可能对您有所帮助:http://www.webperformance.com/load-testing/blog/2012/12/setting-apache2-ulimit-for-maximum-prefork-performance/
(免责声明:我与作者合作)