有没有办法人为减慢 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
希望这可以帮助!