当我尝试各种 JMeter 负载测试时,CPU、内存、网络、IO 资源都没有得到充分利用

当我尝试各种 JMeter 负载测试时,CPU、内存、网络、IO 资源都没有得到充分利用

我正在尝试评估我的 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/

(免责声明:我与作者合作)

相关内容