2013-08-01 57 views
0

我們有(++ /管理寫在c)中的方法,其通過接收TCPIP網絡數據。 在跟蹤網絡負載運行了一段時間之後,似乎網絡進入凍結狀態並且進程沒有獲取數據,系統中還有其他使用網絡(同一網卡)的進程正常運行。這個過程在幾分鐘後自行消失。過程停止獲取網絡數據

任何想法發生了什麼? 我可以跟蹤任何計數器,看看我的過程是否有一些限制?

回答

0

這將是非常困難的具體回答, - 不知道到底什麼是你的程序/應用程序,

- 無論它是一個網絡聊天應用程序或文件服務器/客戶端,還是......

- 沒有你的過程中它是如何實現的,哪些庫它使用,如果相關問題的其他細節。

而且你沒有提到什麼操作系統和環境你下, 運行這個過程中很少有誰能幫助。它可以是任何東西,在你的代碼中一個繁忙的等待循環,如果它的多線程代碼鎖定問題,... 儘管如此,這裏有一些選項來檢查:

如果它的linux嘗試下面的命令來調試監測過程的行爲,看看有什麼可以problem-

  1. 頂部 檢查頂部看到流多少資源(CPU,內存)的過程是使用,如果有什麼CPU使用率異常高值它。

  2. 的pstack 這應該疊加在該問題的時間執行該處理的幀。

  3. netstat的 運行此必要的選項(TCP/UDP)來檢查什麼是網絡套接字的你進程打開的stae

  4. 的gcore -s -c 這迫使你的過程,核心時上述問題發生,然後用gdb GDB 分析是核心文件,然後使用命令,其中在gdb的提示,以獲得過程的完整回溯(其功能是它最後一次執行和以前的函數調用。