进程停止获取网络数据

时间:2013-08-01 09:15:52

标签: networking tcp freeze

我们有一个进程(用c ++ / managed编写),它通过tcpip接收网络数据。 在跟踪网络负载的同时运行该过程一段时间后,似乎网络进入冻结状态并且该过程没有获取数据,系统中还有其他进程使用正常运行的网络(相同的网元)。 几分钟后,这个过程就会自动摆脱这种冻结状态。

知道发生了什么事吗? 我可以跟踪任何计数器,看看我的流程是否达到了某些限制?

1 个答案:

答案 0 :(得分:0)

具体回答非常困难, - 不知道您的流程/应用程序究竟是什么,

- 无论是网络聊天应用程序,还是文件服务器/客户端,还是......

- 没有关于您的流程如何实施的其他详细信息,它使用的库,如果与问题相关。

你还没有提到你正在运行这个过程的操作系统和环境,    很少有人可以提供帮助。它可能是任何东西,代码中繁忙的等待循环,如果它是一个多线程代码,锁定问题,....  尽管如此,这里还有一些选项需要检查:

如果它的linux尝试下面的命令来调试和监视进程的行为,看看可能有什么问题 -

  1. 顶 检查顶部以查看您的进程正在使用的资源(CPU,内存)以及CPU使用率是否存在异常高的值。

  2. 的pstack 这应该在问题发生时堆叠正在执行的进程的帧。

  3. netstat的 使用必要的选项(tcp / udp)运行它以检查进程打开的网络套接字的stae

  4. gcore -s -c 这会在发生上述问题时强制您的进程处于核心状态,然后使用gdb分析该核心文件 GDB   然后在gdb提示符处使用命令来获取进程的完整回溯(它正在执行最后一次和之前的函数调用。