• 2625阅读
  • 3回复

[讨论]QTcpServer诡异问题 [复制链接]

上一主题 下一主题
离线liulin188
 

只看楼主 正序阅读 楼主  发表于: 2020-12-29
该怎么说呢,有2台阿里云服务的server都出现了一个诡异情况:
server程序在运行一段时间后,出现端口在监听,但是新连接进不来,本地telnet都不通。
之前有一台在运行20天以后有这个问题,由于时间比较长我就没管它。

最近另一台服务器一直运行的好好的server程序,居然出现不到24小时,几个小时就出现这个情况,比较容易复现,所以就想彻底搞明白。

在研究了2天之后,我发现情况是这样的:
server程序在运行一段时间后,突然,很突然,差不多一瞬间的事,端口不通了,netstat查看端口依然在监听,然后出现了大概有50个左右CLOSE_WAIT状态的连接。这些CLOSE_WAIT是一起瞬间冒出来的,不是慢慢积累的!
我的服务器是被动关闭连接,给我的感觉就是突然间这个端口被挂起来,连关闭都没来得及,就被挂起冻结的感觉,之后就不通。然后我不用重启server程序,直接调用QTcpServer的close在调用listen就又继续工作了。

一开始我怀疑是我server程序关闭socket有bug,但是检查之后确实都关了。
而且我测试如果服务器故意不关闭socket之后有两点不同:
1,如果服务器不关闭socket,50个左右的CLOSE_WAIT状态根本没影响,可以继续通信。
2,如果服务器不关闭socket,这个CLOSE_WAIT状态,必须要重启这个server程序进程才会消失,但是我现在的情况如上所说不用重启进程,只需要调用QTcpServer的close在调用listen,所有的CLOSE_WAIT状态就没了。

所以我感觉可能99%不是程序的问题。。。
不知道有没有人碰到过这种情况,或者给点提示,真的纠结的一批~~~~







https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
在线海森堡

只看该作者 3楼 发表于: 2020-12-30
你这个问题应该不难重现。你在内网做实验,把server的网线拔掉10分钟再插上,看看还有没有这个问题
离线liulin188

只看该作者 2楼 发表于: 2020-12-30
回 九重水 的帖子
九重水:路过帮顶,楼主最后两句出现了程序员最著名的一句话引起我方注意:
100%,99%不是我程序的问题。[表情]
这种问题一般是程序问题;[表情]
然后可能是设置的超时问题;
....... (2020-12-30 16:10)

你看完我后面的再说
第1不是大量,就几十个,不足以引起端口崩溃。
第2不是程序引起的。我后面有说明。
第3我现在有4台服务器在跑,只有阿里云的2台出现这个情况,其他2台已经跑了有半年,未出现。



https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
离线九重水

只看该作者 1楼 发表于: 2020-12-30
路过帮顶,楼主最后两句出现了程序员最著名的一句话引起我方注意:
100%,99%不是我程序的问题。

这种问题一般是程序问题;
然后可能是设置的超时问题;
其它问题。
百度一下‘浅谈CLOSE_WAIT’会有惊喜。

总结:出现大量的CLOSE_WAIT,几乎可以肯定就是server端coder的锅。
快速回复
限100 字节
 
上一个 下一个