如何获取 UDP 请求的每秒请求数和每个请求的延迟

如何获取 UDP 请求的每秒请求数和每个请求的延迟

我有一个 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

相关内容