本文介绍了在Linux实例中使用Apache Bench进行压力测试时,提示“apr_pollset_poll: The timeout specified has expired”错误的问题原因及解决方案。
问题描述
在Linux实例的Apache中进行ab压力测试时(如:ab -c 10 -n 5000 http://192.168.XXX.XXX/
)提示以下报错。
apr_pollset_poll: The timeout specified has expired
问题原因
由于压测的并发请求超出ECS实例的最大连接条目,导致压测过程中报错。
解决方案
您可以登录实例,修改/etc/sysctl.conf
文件内容并在ab测试命令中加-k
参数以解决此问题。
远程连接ECS实例。
具体操作,请参见连接方式概述。
修改内核参数文件。
执行如下命令,打开内核参数文件(
/etc/sysctl.conf
)。vim /etc/sysctl.conf
在内核参数文件中,添加如下内容。
net.ipv4.netfilter.ip_conntrack_max = 3276800 net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_tw_reuse = 0 net.ipv4.tcp_orphan_retries = 1 net.ipv4.tcp_fin_timeout = 25 net.ipv4.tcp_max_orphans = 8192 net.ipv4.ip_local_port_range = 32768 61000
按
Esc
键、输入:wq
并按Enter
键。
执行如下命令,使配置生效。
sysctl -p /etc/sysctl.conf
在ab测试命令中加
-k
参数,并重新执行该命令,确认不会再出现该问题。如以下示例,在
ab -c 10 -n 5000 http://192.168.XXX.XXX/
命令中添加-k
参数。ab -c 10 -n 5000 -k http://192.168.XXX.XXX/
文档内容是否对您有帮助?