Apache默認(rèn)Prefork 和Worker 兩種工作模式有什么區(qū)別

      網(wǎng)友投稿 873 2022-05-30

      文章目錄

      Apache WEB 服務(wù)器詳解

      Apache WEB 服務(wù)器軟件簡介

      Prefork 的工作原理

      Worker 的工作原理

      Apache WEB 服務(wù)器詳解

      Apache WEB 服務(wù)器軟件簡介

      Apache HTTP Server是Apache軟件基金會的一個開源的網(wǎng)頁服務(wù)器,是世界使用排名第一的Web服務(wù)器軟件,可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是目前最流行的Web服務(wù)器端軟件之一。

      Apache服務(wù)器是一個多模塊化的服務(wù)器,經(jīng)過多次修改,成為目前世界使用排名第一的Web服務(wù)器軟件。Apache取自“A Patchy Server”的讀音,即充滿補丁的服務(wù)器,因為Apache基于GPL發(fā)布,大量開發(fā)者不斷為Apache貢獻(xiàn)新的代碼、功能、新的特性、修改原來的缺陷。

      Apache服務(wù)器的特點是使用簡單、速度快、性能穩(wěn)定,可以做負(fù)載均衡及代理服務(wù)器來使用。

      Prefork 的工作原理

      如果不用“——with-mpm”顯式指定某種MPM,prefork就是Unix平臺上缺省的MPM.它所采用的預(yù)派生子進(jìn)程方式也是Apache1.3中采用的模式.prefork本身并沒有使用到線程,2.0版使用它是為了與1.3版保持兼容性;另一方面,prefork用單獨的子進(jìn)程來處理不同的請求,進(jìn)程之間是彼此獨立的,這也使其成為最穩(wěn)定的MPM之一.

      prefork的工作原理是,控制進(jìn)程在最初建立“StartServers”個子進(jìn)程后,為了滿足MinSpareServers設(shè)置的需要創(chuàng)建一個進(jìn)程,等待一秒鐘,繼續(xù)創(chuàng)建兩個,再等待一秒鐘,繼續(xù)創(chuàng)建四個……如此按指數(shù)級增加創(chuàng)建的進(jìn)程數(shù),最多達(dá)到每秒32個,直到滿足MinSpareServers設(shè)置的值為止.這就是預(yù)派生(prefork)的由來.這種模式可以不必在請求到來時再產(chǎn)生新的進(jìn)程,從而減小了系統(tǒng)開銷以增加性能.

      Apache默認(rèn)的Prefork 和Worker 兩種工作模式有什么區(qū)別

      Worker 的工作原理

      相對于prefork,worker是2.0版中全新的支持多線程和多進(jìn)程混合模型的MPM.由于使用線程來處理,所以可以處理相對海量的請求,而系統(tǒng)資源的開銷要小于基于進(jìn)程的服務(wù)器.但是,worker也使用了多進(jìn)程,每個進(jìn)程又生成多個線程,以獲得基于進(jìn)程服務(wù)器的穩(wěn)定性.這種MPM的工作方式將是Apache2.0的發(fā)展趨勢.

      worker的工作原理是,由主控制進(jìn)程生成“StartServers”個子進(jìn)程,每個子進(jìn)程中包含固定的ThreadsPerChild線程數(shù),各個線程獨立地處理請求.同樣,為了不在請求到來時再生成線程,MinSpareThreads和MaxSpareThreads設(shè)置了最少和最多的空閑線程數(shù);而MaxClients設(shè)置了所有子進(jìn)程中的線程總數(shù).如果現(xiàn)有子進(jìn)程中的線程總數(shù)不能滿足負(fù)載,控制進(jìn)程將派生新的子進(jìn)程.

      Worker模式下所能同時處理的請求總數(shù)是由子進(jìn)程總數(shù)乘以ThreadsPerChild值決定的,應(yīng)該大于等于MaxClients.如果負(fù)載很大,現(xiàn)有的子進(jìn)程數(shù)不能滿足時,控制進(jìn)程會派生新的子進(jìn)程.默認(rèn)最大的子進(jìn)程總數(shù)是16,加大時也需要顯式聲明ServerLimit(最大值是20000)

      需要注意的是,如果顯式聲明了ServerLimit,那么它乘以ThreadsPerChild的值必須大于等于MaxClients,而且MaxClients必須是ThreadsPerChild的整數(shù)倍,否則Apache將會自動調(diào)節(jié)到一個相應(yīng)值(可能是個非期望值).

      在大多數(shù)平臺上,Prefork MPM在效率上要比Worker MPM要高,但是內(nèi)存使用大得多。prefork的無線程設(shè)計在某些情況下將比worker更有優(yōu)勢:它可以使用那些沒有處理好線程安全的第三方模塊,并且對于那些線程調(diào)試?yán)щy的平臺而言,它也更容易調(diào)試一些。

      Worker模式:Worker MPM 使用多個子進(jìn)程,每個子進(jìn)程有多個線程。每個線程在某個確定的時間只能維持一個連接。通常來說,在一個高流量的HTTP服務(wù)器上,Worker MPM是個比較好的選擇,因為Worker MPM的內(nèi)存使用比Prefork MPM要低得多。

      Worker MPM也由不完善的地方,如果一個線程崩潰,整個進(jìn)程就會連同其所有線程一起"死掉".由于線程共享內(nèi)存空間,所以一個程序在運行時必須被系統(tǒng)識別為"每個線程都是安全的"。

      Apache 任務(wù)調(diào)度

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:快速入門Redis系列(2)——Redis的數(shù)據(jù)類型詳解
      下一篇:嵌入式內(nèi)核及驅(qū)動開發(fā)之學(xué)習(xí)筆記(六) 驅(qū)動層中斷實現(xiàn)
      相關(guān)文章
      亚洲色成人WWW永久在线观看 | 亚洲乳大丰满中文字幕| 亚洲春色另类小说| 亚洲欭美日韩颜射在线二| 亚洲成a人片在线观看久| 国产婷婷综合丁香亚洲欧洲| 久久亚洲私人国产精品| 婷婷久久久亚洲欧洲日产国码AV| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 亚洲精品97久久中文字幕无码| 日韩国产精品亚洲а∨天堂免| 亚洲AV成人无码网天堂| 国产亚洲精品美女| 亚洲国产成人久久笫一页| 亚洲伊人久久综合影院| 亚洲夜夜欢A∨一区二区三区 | 中文文字幕文字幕亚洲色| 久久综合久久综合亚洲| 亚洲另类无码专区首页| 色偷偷亚洲第一综合| 亚洲国产成人久久综合一区77| 国内成人精品亚洲日本语音| 亚洲成年人啊啊aa在线观看| 亚洲人成色7777在线观看不卡| 国产亚洲一区区二区在线 | 亚洲精品人成网在线播放影院| 日本亚洲色大成网站www久久| 亚洲国产精品ⅴa在线观看| 国产精品国产亚洲区艳妇糸列短篇 | 国产AV无码专区亚洲AWWW| 亚洲人成网站在线播放vr| 亚洲AV无码不卡在线播放| 亚洲黄色在线网站| 日本亚洲精品色婷婷在线影院| 亚洲日韩中文字幕一区| 国产精品亚洲综合天堂夜夜| 国产成人精品日本亚洲专区61| 久久久久亚洲精品美女| 亚洲国产精品综合久久网各| 亚洲精品无AMM毛片| 亚洲精品麻豆av|