日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

进程守护系统,你懂吗?

發布時間:2025/5/22 windows 141 豆豆
生活随笔 收集整理的這篇文章主要介紹了 进程守护系统,你懂吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.什么是進程守護系統?  

  進程守護系統,用于監控指定的進程,當發現目標進程不再正常工作時,就關閉該進程,并重啟它。

  在什么情況下使用進程守護系統了?比如說,我們的某個服務器軟件,在上線后出現一個嚴重的bug,該bug雖然很難出現,但是只要一出現,整個服務都會停掉(進程沒有崩潰,只是不再提供服務)。此時,重啟服務軟件,又會開始正常工作。

  對于這樣嚴重的bug,必須要查清楚并解決掉的。但是,基于以下兩個原因:

(1)系統已經對用戶開放,服務不能停。不可能說系統先下線,直到bug被解決掉后再重新上線。

(2)bug很難重現,可能需要加日志,不斷地跟蹤排查,這很可能是一場持久戰。

 ? 為了讓系統繼續線上運行,在bug解決之前,必須要保證系統停止服務之后,能迅速重新啟動恢復服務。此時,使用進程守護系統是最恰當不過的了。

   OrayGuard就是為達到這一目的,實現了一個進程守護系統。一個守護者程序,可以守護同一臺機器上的多個進程。

  

?

2.進程守護系統的實現及使用

   OrayGuard守護者對被守護進程的管理使用的是心跳機制,其原理描述如下:

(1)被守護進程定時向守護者報告(發送心跳),以表明自己是在正常提供服務。

(2)如果守護者發現某個被守護進程連續一段時間都沒有心跳過來,就關閉對應的進程,然后再啟動對應的程序。

  在OrayGuard系統中,為了方便使用,已經做了很多工作,直接提供如下設施給使用者。

(1)在守護者這一方:提供了可直接運行的exe,雙擊即可運行起來。

(2)在被守護進程這一方:提供了OrayGuard.Core.dll,使用者只要調用其中的GuardianProxy靜態類的幾個方法,即可完成所有工作。?

/// <summary>/// 與守護服務進行通信的Proxy,提供給被守護進程直接使用。/// </summary>public static class GuardianProxy{ /// <summary>/// 初始化Proxy,并向守護服務注冊當前進程。/// </summary>/// <param name="guardServerPort">守護進程提供服務的Port</param>/// <param name="timeoutInSecs">超時間隔。單位:秒</param>public static void Initialize(int guardServerPort, int timeoutInSecs);/// <summary>/// 向守護服務激活當前進程一次。/// </summary>public static void Activate();/// <summary>/// 向守護服務注銷當前進程。/// </summary>public static void Dispose();}

?  在被守護方:

(1)進程啟動時,調用GuardianProxy的Initialize方法,即可向守護者注冊當前進程。(端口號就填守護者配置文件中設定的端口)

(2)進程內需要定時(比如10秒一次)檢測自己是否仍在正常提供服務,如果是,則調用GuardianProxy的Activate方法,向守護者發送心跳。

(3)當進程正常退出時,調用GuardianProxy的Dispose方法向守護者注銷。

?

?3.Demo以及下載

  最后,我們編寫了一個用于演示的被守護進程的項目,整個系統運行起來后,效果如下:

? ? ??

?  (注意:實際測試時,不要調試,而是要雙擊演示項目debug目錄下的TestProcess.exe運行演示,否則,模擬故障后,演示進程會被關閉,但是無法被重啟。因為,調試時,檢測到的是TestProcess.vshost.exe)

?  下載 OrayGuard。壓縮包中包含如下內容:

(1)OrayGuard守護者:可直接運行的守護者程序。

(2)SDK:供被守護進程使用的SDK。

(3)TestProcess:用于演示的被守護進程的項目源碼。

  

?更多分享:打通B/S與C/S !讓HTML5 WebSocket與.NET Socket公用同一個服務端!

?

總結

以上是生活随笔為你收集整理的进程守护系统,你懂吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。