gpt4 book ai didi

linux - 使用 Tcpreplay 进行 UDP 调整

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:34 28 4
gpt4 key购买 nike

我正在开展一个项目,该项目使用 Twisted 提供高性能 UDP 服务器,能够处理每秒 5k 数据包的突发流量,数据包大小从 50 到 100 字节不等。我正在测试服务器的 PC 具有四核 CPU 和 4GB RAM,并且正在运行 Ubuntu 10.1。

在我的性能测试中,我使用 tcpreplay尽快将先前捕获的包含 500 个 UDP 数据包的流量发送到 Twisted UDP 服务器。测试在同一个千兆 LAN 上的两台物理(非 VM)机器之间进行。根据 tcpreplay,我以每秒约 1250 个数据包的速度发送数据包,但在我发送的 500 个数据包中,Twisted UDP 服务器仅收到约 350-400 个数据包。

我可以在 Twisted 中或在系统级别进行什么样的性能调优来提高性能并防止丢弃过多的 UDP 数据包?

服务器代码

#!/usr/bin/env python

from twisted.internet import reactor
from twisted.internet.protocol import DatagramProtocol

packetCount = 0

class DeviceProtocol(DatagramProtocol):

"Show me how many packets the server has received"
def datagramReceived(self, datagram, address):
global packetCount
packetCount += 1
print "Received packet %s" % packetCount

def main():
reactor.listenUDP(7000, DeviceProtocol())
reactor.run()

if __name__ == '__main__':
main()

自定义 Sysctl.conf 设置

net.core.netdev_max_backlog=2500
net.core.rmem_max=16777216
net.core.wmem_max=16777216

更新的答案

  • CPU 使用率永远不会超过 10%
  • 将输出重定向到一个文件,或者只打印每 100 个“已接收数据包”消息会产生很小的差异,我仍然看到 10-20% 的数据包丢失。
  • 使用 iptraf 测试我的网络稳定且性能良好

最佳答案

我已经使用 iperf 测试了我的网络,这是一个优秀的工具,我将把它添加到我的工具箱中,我的网络可以毫无问题地处理所有流量。

原来我的问题是由于:

  • 使用一个小的捕获文件
  • 使用 tcpreplay 的 --loop 选项重播捕获

在我的测试中,如果 tcpreplay 在一个小的捕获文件上循环得太快,它就会丢弃数据包。我的捕获文件由 100 个数据包组成,循环四五次会导致 10-20% 的数据包没有发送到接收端。

关于linux - 使用 Tcpreplay 进行 UDP 调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5293212/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com