网络接收发送量大的时候很容易死机
3块网络芯片RTL8139,系统vxWorks5.5,多进程应用程序,udp,tcp都有。
1块网卡专门做tcp传送,其他2块都用udp,现在的现象是tcp的先发生阻塞,其他2块也逐步阻塞,阻塞的时候不能接收到数据包,不能ping通,但是vxworks可以发出来。过一段时间后就会造成死机,系统自动重启。
请达人不吝赐教,感激之至!
我以前用vxworks做过千兆网卡传输数据的试验,也没有出现死机的现象。你的数据流量究竟有多大?估计还是你程序的问题
其实我统计的正常流量对于100M的网卡来说非常小,而且平时运行也很正常,mbufShow,ifShow显示的数据都很正常,但是过一段时间(几天,一个星期不等)就 会出现上面的现象。
我也觉得可能是你的程序的问题,仔细想想是不是某些地方的机制考虑的不健全,另外,你确定重启是因为这个引起的吗?也没有其他的可能性
我觉得可能是程序有问题,造成了你的任务挂起。任务挂起后,该任务没有对硬件的看门狗写入标志,造成了cpu重新启动。
你说的问题,我也碰到了。不知道你解决了没有!我是在一个任务中做了TCP、udp,但是当UDP还在SEND的时候,TCP却断了。我感觉应该是协议栈初始配置的问题。通过抓包程序发现,当TCP dead的时候,接受主机一样能收到来自VXWORKS设备的PING包,并且主机也做了正确的回应,只是vxworks设备收不到应当包罢了。WHY?谢谢!!!
谢谢大家的关心。
目前我把原来的tcp的应用改成udp的了,情况良好。程序的框架没有变化,修改的内容有2部分,一是连接的代码去除了,而是原来tcp的send改成了我自己的send_by_udp,用udp分包发送原来的tcp数据,接收的地方在拼起来,调用原来的处理函数处理。原来的程序基本没有修改,至今没有出现用tcp时候出现的问题,应该不是程序的问题,请大家多在系统的方面考虑考虑。
tcp的通讯进程,udp的通讯进程和喂狗的进程是分开的,不会造成喂狗不及时复位。cpu的资源一直正常,都在20%左右。
我也使用4块8139网卡通讯,还没有测试运行,不知道会不会出现上述问题,楼主email多少,交流交流
要结帖了,有什么问题大家可以加我msn: szfszf@21cn.com交流。