【问题标题】:Debugging a TCP-Server调试 TCP 服务器
【发布时间】:2012-08-24 16:22:08
【问题描述】:

我有一个接受来自客户端应用程序的 TCP 连接的 C++ 应用程序。

经过看似随机的正常运行时间(几天)后,它停止接收来自客户端的后续消息,并且只看到每个 TCP 连接上的第一条消息。重启后一切正常。

问题是,这只发生在我必须重新启动的生产服务器上,一旦它卡住并且我无法在实验室机器上重现它。所有套接字操作似乎都没有返回错误,我会在我的日志文件中看到该错误,并且应用程序很大,所以我不能只在此处发布相关部分。

第一条消息总是不断收到,只有一段时间后才收到后续消息。即使我的应用程序停止接收后续消息,我也可以看到它们通过 Wireshark 进入。

有什么想法可以让我知道发生了什么吗?我应该寻找什么?

【问题讨论】:

  • 更多日志记录,更多更多日志记录。
  • @Joachim:谢谢,但我已经在检查所有套接字函数的所有返回值。没有什么。应该记录任何不明显的内容?
  • 所有系统函数的返回值。也许将跟踪添加到您自己的函数(即“现在进入函数 x”/“现在离开函数 x”,也可能记录参数)。
  • 添加更多细节,比如你是 windows 还是 linux 开发者
  • @luskan:这发生在 Linux 服务器上。

标签: c++ sockets tcp


【解决方案1】:

这里使用了任何配置设置?过去,我在服务器接受条件上设置了在处理 50,000 条消息后忽略消息的条件。这是为了防止开发中的失控情况。此代码有一次上线,但未将配置设置更改为“允许无限消息”。结果和你描述的完全一样,2-3天没问题,然后消息发送正常,但只是忽略了,没有任何错误。

此处可能并非如此,但我将其作为您可能需要查看的示例。

【讨论】:

  • 有趣的想法。不幸的是,我在那里没有人为阻挡。其他安装运行数周或数月都没有问题。
猜你喜欢
  • 2016-07-02
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 2014-02-21
  • 2014-03-21
  • 1970-01-01
  • 2013-07-01
  • 2013-03-26
相关资源
最近更新 更多