我有一个 HTTP Api 服务器正在查询 UDP 服务器。我过去常常wrk
测试 HTTP Api 服务器的每秒请求数,现在我想测试 UDP 服务器的每秒请求数和每个请求的延迟。我希望能够像 wrk 一样设置线程数和连接数。
对于 wrk,我做了以下事情:
wrk -t30 -c100 -d30s http://localhost:8083/queryArgument
它查询 API 服务器,然后在代码内部查询 UDP。
我想单独查询 UDP 服务器,而不通过 API 服务器。
对于创建 UDP 服务器的人提供的示例,我们要运行以下命令:
echo -n "queryArgument" | nc -u -w4 127.0.0.1 1175
我不知道如何将其转换成可以传输的内容wrk
任何帮助将不胜感激。
最终目标是查看查询 UDP 的统计数据
更新
我可以像这样查询 netcat:
time yes|nc -v -u -z -w 3 127.0.0.1 1175
但对于系统来说,它以秒为单位,而我需要的是毫秒
答案1
对于流量生成和基准测试,“wrk”和“ab”(apachebench)仅适用于 TCP HTTP 请求。要生成 UDP 流量,您需要编写自己的代码。(例如,请参阅http://1wt.eu/tools/udp-test/)
如果您需要计时,最好使用专用的流量捕获实用程序,例如 tcpdump、tshark 或 wireshark,或者使用 libcap 或 libtins 编写自己的代码。(例如。https://github.com/pollere/pping)
如果您只是需要计数器和吞吐量,则可以使用 iptables(或者如果您使用的是前沿服务器,则可以使用 nftables,它具有不同的命令界面)
iptables -t mangle -I INPUT -p udp --sport 1175
iptables -t mangle -I INPUT -p udp --dport 1175
这将创建防火墙条目,它只对本地主机上往返于端口 1175 的数据包进行计数。然后您可以查看计数器:
iptables -nvxL -t mangle
这将为您提供数据包和字节数。
如果您想将其限制为环回和 127.0.0.1,并为其提供唯一的注释行,以便您可以在完成后再次删除它:
iptables -t mangle -I INPUT -p udp --sport 1175 -i lo -s 127.0.0.1 -m comment --comment watch
iptables -t mangle -I INPUT -p udp --dport 1175 -i lo -d 127.0.0.1 -m comment --comment watch
当您的流量转移到另一台主机时,您需要将规则移至 OUTPUT 链的第二条规则。或者,如果您可以在路由器、防火墙或其他中间主机上监控此流量,则可以将这两条规则都放入 FORWARD 链中。
您可以使用 libiptc 的系统调用完成上述所有操作,或者当然,如果您愿意,也可以创建自己喜欢的语言接口。还有一些其他选项,例如 rfw、ufw 等。不过,大多数实用程序似乎都是通过 iptables 与防火墙通信的。
如有疑问,请咨询:
man iptables