0
我正在研究Linux核心在Linux機器上的性能。具體確定框架本身可用的工具有哪些限制。如何增加UDPClient吞吐量
我一直在約50,000箱/每箱。到目前爲止,看起來〜20,000 pps是UDPClient在一小部分數據包丟失之前能夠實現的。使用另一種工具(syslog-ng)會出現罕見/低丟包率。
如果我想要處理高達50K pps,UdpClient能夠通過適當的調整來處理這個問題嗎?
using (UdpClient udpListener = new UdpClient(_sysLogPort))
{
udpListener.Client.ReceiveBufferSize = _bufferSize;
while (!_cts.IsCancellationRequested)
{
try
{
UdpReceiveResult result = await udpListener.ReceiveAsync();
}
catch (Exception ex)
{
}
}
}
您的主要武器是通過SO_RCVBUFSIZ來增加套接字接收緩衝區的大小,但是會在您使用的API中顯示。 – EJP
@EJP我相信ReceiveBufferSize屬性是處理這個問題的部分(我可能是錯的),但是當前發送的數據包非常小,緩衝區限制遠大於當前發送的數據包。這感覺就像我可能對UdpClient缺少一些調整,因爲syslog-ng能夠以很少的溢出處理這個流量 –
你用來發送數據包到這個程序的包大小是多少?你使用哪個工具發送這些數據包?你使用哪種處理器類型?你能否確認你使用的是回送接口(即發送者和你的程序在同一臺Linux主機上)?您在Linux機器上使用的是哪個版本的dotnet:1.0.4,更舊,更新? –