java udp套接字_java UDP套接字可以处理多少个请求?

本文探讨了一个Java UDP服务器如何处理大约10,000个请求/秒的问题。通过测试,发现在一分钟内发送约9,000个请求后,服务器在kernel层面出现了丢包现象。UDP服务器的实现中,使用了`DatagramSocket`接收数据包,并将接收到的包放入`LinkedTransferQueue`。丢包可能的原因是内核缓冲区空间不足。为了解决这个问题,作者寻求减少丢包的方案和其他实现建议。" 111891526,10293861,CSS3技巧:轻松创建缺角四边形与折角效果,"['CSS3实现缺角四边形', '前端开发', 'CSS']
摘要由CSDN通过智能技术生成

我需要构建一个可以处理~10_000个请求/秒的UDP服务器.从下面的代码开始,测试

java套接字是否可以处理这些请求数.

我用~9000个请求轰炸服务器一分钟,

Total number of requests sent from the client : 596951

在我看到的tcp转储中

90640 packets captured

175182 packets received by filter

84542 packets dropped by kernel

UDP服务器代码:

try (DatagramSocket socket = new DatagramSocket(port)) {

System.out.println("Udp Server started at port :" + port);

while (true) {

byte[] buffer = new byte[1024];

DatagramPacket incomingDatagramPacket = new DatagramPacket(buffer, buffer.length);

try {

socket.receive(incomingDatagramPacket);

LinkedTransferQueue.add(incomingDatagramPacket);

} catch (IOException e) {

e.printStackTrace();

continue;

}

}

} catch (SocketException e) {

e.printStackTrace();

}

What is the the probable cause kernel dropping the packets in program

this simple ?

How to reduce it ? Any other implementation ?

从这个link,从评论中读取,UDP协议的丢包总是会发生在网络到java socket.recieve方法之间.

注意:必须弄清楚捕获的tcpdump数据包中的异常,但丢弃了大量数据包.

tcpdump中的异常是lack of buffer space,为了知道收到的数据包的数量,我使用的是iptraf-ng,它给出了每个端口收到的数据包数:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值