我有一个 C++ 应用程序,它接受来自客户端应用程序的 TCP 连接。
在看似随机的正常运行时间(几天)之后,它停止接收来自客户端的后续消息,并且只看到每个 TCP 连接上的第一条消息。重新启动后一切正常。
问题是,这只发生在生产服务器上,一旦卡住我就必须重新启动,我一直无法在实验室机器上重现它。套接字操作似乎都没有返回错误,我会在我的日志文件中看到这个错误,而且应用程序很大,所以我不能只在此处发布相关部分。
第一条消息一直不断,只有一段时间后没有收到后续消息。即使我的应用程序停止接收后续消息,我也可以看到它们通过 Wireshark 进入。
有什么办法可以让我知道发生了什么吗?我应该寻找什么?
最佳答案
这里使用了任何配置设置吗?过去,我在服务器上设置了一个条件,接受在处理完 50,000 条消息后忽略消息。这是为了防止开发中出现失控情况。这段代码有一次在没有将配置设置更改为“允许无限消息”的情况下上线。结果正是你所描述的,2-3 天没问题,然后消息发送正常,但只是被忽略,任何地方都没有错误。
这里可能不是这种情况,但我将其作为您可能需要查看的位置的示例。
关于c++ - 调试 TCP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12103862/