微软 Python Ubuntu 开源 linux 程序员 shell nginx mysql google apache centos wordpress php 云计算 Firefox 编程 Windows java Android

服务器守护进程的运行方式

 獨立運行的守護進程由init腳本負責管理,所有獨立運行的守護進程的腳本在/etc目錄下。系統服務都是獨立運行的守護進程,包括syslogd和cron等。獨立運行的守護進程的工作方式稱做stand-alone,它是UNIX傳統的C/S模式的訪問模式。stand-alone模式的工作原理如圖4-4所示。
工作在stand-alone模式下的網絡服務有xinetd、route、gated,另外還有Web服務器Apache和郵件服務器sendmail、域名服務器bind。在Linux系統中通過stand-alone模式啟動的服務由/etc/rc.d/下面對應的運行級別當中的符號鏈接啟動。
 從守護進程的概念可以看出,對於系統所要通過的每一種服務,都必須運行一個監聽某個端口連接所發生的守護進程,這通常意味著資源浪費。為了解決這個問題,Linux引進了"網絡守護進程服務程序"的概念。RedHatLinux 9.0使用的網絡守護進程是xinted(eXtendedInterNETdaemon)。xinetd能夠同時監聽多個指定的端口,在接受用戶請求時,它能夠根據用戶請求的端口的不同,啟動不同的網絡服務進程來處理這些用戶請求。可以把xinetd看做一個管理啟動服務的管理服務器,它決定把一個客戶請求交給哪個程序處理,然後啟動相應的守護進程。xinetd無時不在運行並監聽它所管理的所有端口上的服務。當某個要連接它管理的某項服務的請求到達時,xinetd就會為該服務啟動合適的服務器。
 和stand-alone工作模式相比,系統不想要每一個網絡服務進程都監聽其服務端口,運行單個xinetd就可以同時監聽所有服務端口,這樣就降低了系統開銷,保護系統資源。但是對於訪問量大、經常出現並發訪問的情況,xinetd則要頻繁啟動相應的網絡服務進程,反而會導致系統性能下降。查看系統為Linux服務提供哪種工作模式,可以在Linux命令行中使用pstree命令,就能看到兩種不同模式啟動的網絡服務。一般來說系統中一些負載高的服務,Sendmail、Apache服務是單獨啟動的;而其他服務類型都可以使用xinetd超級服務器管理。

延伸阅读

评论