2008-10-20 17 views

回答

2

「不掛」始終是一個硬條件,明確檢測,並且將取決於你的服務的細節。

一般而言,可以使用任何形式的進程間通信的。一個簡單的方法是創建一個名爲共享內存映射,只是從您的服務信息寫入其週期性。另一個進程可以監視共享內存並查看其狀態是否停止改變。

這種方法的好處是,你可以擴展共享內存塊,以包括其他診斷可以幫助診斷任何問題。

0

顯而易見的解決辦法似乎是,檢查它是否仍然響應。因此添加一個低頻看門狗定時器。我不知道你想在哪裏監控生動活潑,但是在大多數地方你應該可以從命名管道讀取。然後將看門狗定時器事件轉換爲對命名管道的寫入。如果您沒有觀察讀取,您知道您的服務無法響應至少一個計時器。

0

您可以創建一個命名事件或互斥鎖,然後在您的代碼執行時切換它。然後一個外部程序可以看到這個脈衝作爲程序運行的指示。

我也使用了在另一個線程中運行的內部看門狗系統。該線程查看活動的主線程,如日誌輸出或切換事件。如果沒有看到該活動,則該服務被視爲掛起,並關閉該服務。在這種情況下,您可以將窗口配置爲自動重新啓動已停止的服務,並且可以清除問題(只要它不是內部邏輯錯誤)。

還包括服務我都被寫入日誌文本日誌工作。另外,對於即將「睡一會兒」的服務,我記錄下次醒來的時間。我使用MTAIL來查看輸出的日誌。

相關問題