虚拟机linux系统下qt服务端跑几天莫名其妙的死掉,再次打开服务端发现tcp已经创建不了该ip的服务端了,被占用,怀疑进程还活着。
程序是多线程,有七条线程同时跑,同时调用发送的信号槽,防止多线程发送冲突,内存跑几天也稳定。
问题1. 死掉的时候好像内存会一直涨(也可能不是这个问题)。
所以后面单独把tcp发送提取出来,更频繁的刷20毫秒发一次,发现开三条线程同时发送tcp数据,内存就一直涨,三条之前不会。最后发现是tcp发送缓存堆积的问题,然后就做了调整,让tcp缓存太多了时,丢包,这个问题就不存在了。
问题2. 上次跑了七天死掉的,改了tcp缓存堆积问题后,又跑了两天为发现问题(死一次太不容易
求大佬分析一下问题在哪里。),后面又看网上qApp->processEvents(),这句频繁调用也会导致程序莫名其妙的死掉,会吗?
客户端在windows下,如果不加这句qApp->processEvents(),一旦有一条线程跑起来,客户端再发送任何指令,服务端都不会收、响应了,所以这句没法给它去掉啊
除非改信号槽,不要QtConcurrent子多线程。
其他问题3. 暂时未发现,求大佬分析一下啥原因。




程序是多线程,有七条线程同时跑,同时调用发送的信号槽,防止多线程发送冲突,内存跑几天也稳定。
问题1. 死掉的时候好像内存会一直涨(也可能不是这个问题)。
所以后面单独把tcp发送提取出来,更频繁的刷20毫秒发一次,发现开三条线程同时发送tcp数据,内存就一直涨,三条之前不会。最后发现是tcp发送缓存堆积的问题,然后就做了调整,让tcp缓存太多了时,丢包,这个问题就不存在了。
问题2. 上次跑了七天死掉的,改了tcp缓存堆积问题后,又跑了两天为发现问题(死一次太不容易
客户端在windows下,如果不加这句qApp->processEvents(),一旦有一条线程跑起来,客户端再发送任何指令,服务端都不会收、响应了,所以这句没法给它去掉啊
其他问题3. 暂时未发现,求大佬分析一下啥原因。





