有没有办法人为减慢 Apache http 服务器事务来模拟负载?

有没有办法人为减慢 Apache http 服务器事务来模拟负载?

有没有办法人为减慢 Apache http 服务器事务来模拟负载?

我需要强制 http 事务花费 100 毫秒以上,而不是正常的 3 毫秒,而不会杀死 CPU 或以其他方式影响其他进程。

答案1

简短回答

tc qdisc add dev <intf> root netem delay 100ms

更多细节

NetEm(Wetwork Emulator)是一个基于 TC 的工具,它允许您在传输中引入各种行为,例如延迟、错误、丢包等。看本教程以获得更多说明。

为了给所有传出数据包添加延迟,您可以使用以下命令:

tc qdisc add dev <intf> root netem delay <delay in ms>ms

例子

不延误:

$ping 11.141.69.20
PING 11.141.69.20 (11.141.69.20) 56(84) bytes of data.
64 bytes from 11.141.69.20: icmp_seq=1 ttl=64 time=0.058 ms
64 bytes from 11.141.69.20: icmp_seq=2 ttl=64 time=0.068 ms

添加 200ms 延迟:

$tc qdisc add dev ens4f0 root netem delay 200ms

现在:

$ping 11.141.69.20
PING 11.141.69.20 (11.141.69.20) 56(84) bytes of data.
64 bytes from 11.141.69.20: icmp_seq=1 ttl=64 time=200 ms
64 bytes from 11.141.69.20: icmp_seq=2 ttl=64 time=200 ms

您可以像这样查看设备的规则:

$tc qdisc show dev ens4f0
qdisc netem 8001: root refcnt 161 limit 1000 delay 200.0ms

并通过删除来恢复规则:

$tc qdisc del dev ens4f0 root netem delay 200ms

删除后延迟恢复:

$ping 11.141.69.20
PING 11.141.69.20 (11.141.69.20) 56(84) bytes of data.
64 bytes from 11.141.69.20: icmp_seq=1 ttl=64 time=0.114 ms
64 bytes from 11.141.69.20: icmp_seq=2 ttl=64 time=0.076 ms

希望这可以帮助!

相关内容