2012-08-24 122 views
0

我有一個C++應用程序接受來自客戶端應用程序的TCP連接。調試TCP服務器

看似隨機的時間運行罰款(天)後,它停止接收來自客戶端的後續消息,只看到每個TCP連接上的第一條消息。重新開始後,一切都很好。

問題是,這隻發生在我必須重新啓動的生產服務器上,一旦它卡住,我一直無法在實驗室機器上重現此操作。沒有任何套接字操作似乎會返回一個錯誤,我會在我的日誌文件中看到並且應用程序很大,所以我不能在這裏發佈相關部分。

第一條消息始終保持通暢,一段時間後纔會收到後續消息。即使我的應用程序停止接收後續消息,我也可以看到他們正在使用Wireshark。

任何想法我可能會發現發生了什麼?我應該尋找什麼?

+2

更多日誌記錄,_much_ more日誌記錄。 –

+0

@Joachim:謝謝,但我已經檢查所有套接字函數的所有返回值。沒有。任何非顯而易見的東西都應該記錄下來? –

+0

_all_系統函數的返回值。也許添加跟蹤你自己的功能(即「現在進入函數x」/「現在離開函數x」,也可能記錄參數)。 –

回答

1

此處使用的任何配置設置?在過去,我已經在服務器上放置了一個條件,接受在處理完50,000條消息後忽略消息。這是爲了防止開發中的失控情況。此代碼一次性啓用,無需將配置設置更改爲「允許無限消息」。結果正如你所描述的那樣,2-3天后可以,然後發送的消息沒問題,但只是忽略了任何地方都沒有錯誤。

這可能不是這種情況,但我提到它作爲您可能需要查看的示例。

+0

有趣的想法。不幸的是,我沒有人爲阻擋。其他安裝運行幾周或幾個月沒有問題。 –