我的基于vxworks5.5(tornado2.2)的嵌入式系统负责计费,并及时将信息通过网络(ftp功能)传到服务器上。
可是经常在运行一段时间后(例如几个小时,或者一天以后)发现失去了网络连接。
ftp, telnet都无法连到目标机上,但是系统其他功能还正常,例如仍可刷卡计费。这些功能在系统刚开始运行时是正常的。
因为此时无法telnet所以也无法使用inetstatShow察看网络连接状况。只能重起,一切就有恢复正常了。
对此问题,深感郁闷。 有高手知道相关原因及解决办法吗?
我以前也用过telnet和ftp,但是没有出现过这个问题.
建议查看一下网络连接是否一直完好?个人觉得这个可能性很大,因为即使ftp有问题,telnet也不应该无法连接上.中间网络可能断开过.
还有就是想问下你是一直telnet监视着的吗?如果是的话,这个可能性更大了.如果是的话,你可以试着退出telnet监视,进入telnet后人不在的时候logout,出现你上面说的问题的时候再telnet看能telnet能行不.
我用2.2ftp出现过对端复位,但是重新登陆可以.
在vxworks端,监测网络相关的任务。当ftp不能用,或者定时Ping不通的时候,记录下相关的网络情况,存到本地文件系统。同时可以尝试重新初始化网络相关部分。
回huli1516: 是传的文件。telnet并非一直监视。
我用telnet的感觉时应该主动断开,否则等vxworks端超时断开时,client端就连不上了。
会说session已满。vxworks只能允许一个telnet端。
这一点我觉得是vxworks的局限,但我的问题不是这里。
我的问题是运行一段时间以后,目标机就与外界失去联络了。我的猜测是有可能
tcp连接数已到最大值?端口全被占满而没有释放?
应该在ftp失效时记录保存当时的连接情况。
谢谢。
2.2下的ftp的确存在一些问题.
用下tftp看好点不?
ftp是tcp连接,而tftp是udp方式,以前我用ftp拷贝文件也存在着问题,后来也用的tftp.
如果文件比较少的话,也可以考虑自己用udp传输
应该可以.
telnet的连接数好象可以改,好象是在库里包含的时候改变植就行
不过我没有用过,只是建议下.
如果inetstatShow 无法查看,我怀疑你的内存使用有问题 用memShow 监视一下看看,是不是有内存泄漏
怀疑内存泄漏,要不就是代码有问题?如打开文件后未关闭,造成文件句柄不够使用了。
隔一段时间调用memShow查看内存,调用iosFdShow查看文件描述符等
如果空闲内存不断减小或者打开的fd不断增加
就可以确认是内存泄露还是文件未关闭了
还有可能有的任务优先级过高,高于网络任务(优先级好像为50),然后一直占用cpu
肯定是代码运行过程中出了问题