我需要使用 Siege 对 HTTPS 服务器进行基准测试,以了解它在大量负载下的表现。我从另一台功能强大的机器启动测试,该机器连接到与服务器连接的同一物理交换机。
但是当我启动测试时,我无法让它每秒发出超过 170 个请求。在这种负载下,服务器的 CPU 使用率为 15-20%,请求的平均响应时间约为 0.03 秒。客户端计算机的负载约为 10%。
因此,我逐渐增加 Siege 中的用户数量(工作线程数量),请求率线性增加到 170 个请求/秒,但始终达不到这个水平。无论我启动多少个工作线程,服务器上的负载都不会超过 20%(客户端的负载也不会再增加)。
我该如何克服这个问题?
我在 Google 上搜索了一下,发现请求完成后,与一个临时端口关联的套接字会在一段时间内保持 WAIT_TIME 状态,在此期间无法重用。我尝试通过以下方式来克服这个问题:
sysctl -w net.ipv4.ip_local_port_range="1024 65535"
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
哦,客户端机器是 Linux(我认为是 RedHat,但我不确定)。如能得到任何帮助,我将不胜感激。
答案1
除了 siege 之外,你还考虑过其他工具吗?开源负载测试工具:您应该使用哪一个? 宗和Apache JMeter似乎在功能较弱的环境中产生了更高的请求率。
继续围攻可能不足以创建一个真实的负载测试,因为在现实世界中,攻击一个或多个 URL 并不是发生在服务器上的事情。
答案2
原来是我测试的服务器出了问题。感谢所有愿意提供帮助的人。