我在 Ubuntu10.10 上使用 Siege 2.6.9 做了一些负载测试,使用的脚本如下,
siege -c 900 -r 30 -i -f urls.txt
但我收到了大量的错误消息,例如
error: socket: unable to connect sock.c:222: Operation already in progress or socket timeout
我注意到大多数请求的响应时间都少于 0.2 秒,但过了一段时间,一些请求的响应时间增加到 5 秒,并且周期性地出现暂停,
因此我做了一些 Linux 内核调优工作,例如
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_timestamps=1
sysctl -w net.ipv4.tcp_tw_recycle=1
之后情况有所好转,但还不够好,
所以你们能否给我更多关于
linux 内核参数上的套接字/tcp 参数调整的信息,例如回收/重用/关闭处于 TIME_WAIT 状态的套接字。
任何建议或意见都将不胜感激。非常感谢。
答案1
您可能想尝试降低 net.ipv4.tcp_fin_timeout,这会影响套接字在 TIME_WAIT 中停留的时间。60 已经相当低了;尝试一次降低 10,看看情况是否会有所改善。
echo 50 >/proc/sys/net/ipv4/tcp_fin_timeout
如果有效,将其添加到 sysctl.conf:
net.ipv4.tcp_fin_timeout = 50 # or whatever works best
请记住,虽然它有助于负载测试,但它不一定是实际使用中的良好默认设置。
- 埃里克