关于linux网络IO负载的问题

hh_xj 2010-08-17 05:32:51
对近来开发的系统做了个简单的负载测试,出现了一个奇怪的问题,描述下:

测试方法:
udp通信,在server上建立很多udp socket,用于中转很多client发来的数据(每个socket发送速率10KB/s),
client建立很多socket(模拟真实情况下多个不同的client),向server上对应的udp socket发送数据,
server转发收到的数据到另一个client的某socket。

测试环境:
10/100Mb 交换以太网

出现情况:
1,在cpu使用率低的情况下,没有出现丢包,
2,client继续新建socket,当server的cpu使用率达到90以上时,开始丢包,奇怪之处在于:
a, 对于client在cpu低时建立的socket通信,在cpu高且网络开始丢包时,这些socket通信没有发生丢包
b, 丢包仅对于新建的socket。


不知道这是什么原因,网卡应该没有丢包,那就是协议栈或者操作系统上开始丢包,这部分,希望牛人帮忙解析下。
...全文
309 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hh_xj 2010-08-21
  • 打赏
  • 举报
回复
都是在linux2.6上,udp通信,cpu 100时,服务器对后来的那些udp socket发来的包接收到了,但是发送时丢掉了。但是前面那些socket的包能顺利转发。
sailing0505 2010-08-18
  • 打赏
  • 举报
回复
你的socket是传完数据就关闭,还是一直打开的?
sailing0505 2010-08-18
  • 打赏
  • 举报
回复
server是在什么系统平台下面跑的?
genlic 2010-08-18
  • 打赏
  • 举报
回复
这是socket在server负荷后的一个拥塞控制吧。
sky198306 2010-08-18
  • 打赏
  • 举报
回复
不是牛人,不过个人觉得问题或许在于建立的socket本身
hh_xj 2010-08-18
  • 打赏
  • 举报
回复
socket是一直打开一直发送数据的,测试时几个client的数据都能到达server,而且client处的网络没有丢包,关键是server端开始丢包(没有转发,但只针对后来的socket不转发,但能收到这些socket的数据),我没有找出这种情况的原因。

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧