Apache的模式以及執行緒程序概念(六)

2021-10-06 08:06:54 字數 2634 閱讀 4349

二、模組介紹

2.worker

3.event

因為apache的模式中會有一些程序執行緒的知識,所以如果想要搞懂apache的模式的不同一定要明白程序與執行緒之間是怎樣的一種關係

執行緒是程序的基本單位,乙個程序包含乙個執行緒或多個執行緒,程序下的執行緒會共享該執行緒的資源,而執行緒不會擁有系統資源,當乙個程序崩潰那麼程序下的執行緒全部崩潰,如果乙個執行緒崩潰那麼會連帶其他執行緒或者是整個程序崩潰,多執行緒的好處是提高訪問效率但是也會損失一定的穩定性,併發高的**一般採用多執行緒進行處理,但是需要穩定性的話一般會採用多程序來處理。

最新版本的apache 2.4版本現共有三個模組模式,第乙個也是apache預設的模式,prefork模式,第二個worker模式,第三個是event模式,這三個模式也是apache一路成長的路標性的模組。

httpd -m:檢視所有模組

檢視出的結果shared表示是動態掛載到httpd上的

static表示的是該模組是核心或者httpd必須的模組

控制程序master在最初建立「startservers」後,根據預派生模式,會建立出多個程序,在每乙個程序工作在待定的時間內只能處理乙個請求,好處就是方便請求到來時不用生成臨時請求,會提公升伺服器的web效能,多程序模式,缺點是比較耗費記憶體和系統資源。prefork模式也是apache的預設模式。

配置方式

[root@localhost usr] vim /etc/httpd/conf/httpd.conf 

startservers 8 #開啟httpd時的程序

minspareservers 5 #最小的空閒程序

maxspareservers 20 #最大的空閒程序

serverlimit 256 #每個程序的執行緒數

maxclients 256 #每個程序的最大執行緒數

maxrequestsperchild 4000 #每個執行緒處理的最大上限

#測試配置檔案是否有錯誤

[root@localhost usr] systemctl restart httpd

使用多執行緒多程序的混合模型的mpm,由於是基於執行緒來處理,所以可以處理海量的http請求,相比較於prefork需要的資源也較少,適合大併發高流量的web伺服器應用環境,但是缺點就是當乙個執行緒崩潰後整個程序或者應用程式有可能會一起掛掉,穩定性較低。

配置方式

[root@localhost usr] vim /etc/httpd/conf.modules.d/00-mpm.conf

#進入mpm配置檔案,將worker的模組#刪除即開啟模組

#模組已經掛載

#worker mpm引擎配置段;

startservers 8 #預設啟動apache工作程序數;

maxclients 4000 #每秒支援的最大客戶端併發;

minsparethreads 25 #最小空閒執行緒數;

maxsparethreads 75 #最大空閒執行緒數;

threadlimit #每個子程序可能配置的執行緒上限

threadsperchild 75 #每個程序啟動的執行緒數;

maxrequestsperchild 0 #每個程序能處理的最大請求數,0表示無限制;

事件驅動模型,多程序模型,每個程序可以相應多個請求。是apache最新的模式它和worker模式很像,最大的區別在於,它解決了keep-alive場景下,長期被占用的執行緒的資源浪費問題。event mpm中,會有乙個專門的執行緒來管理這些keep-alive型別的執行緒,當有真實請求過來的時候,將請求傳遞給服務執行緒,執行完畢後,又允許它釋放,這樣增強了高併發場景下的請求處理能力,現在已經支援ssl。

keep-alive

長連線,tcp建立後每個資源獲取完成後不會斷開連線,而是會繼續等待其他資源的進行。斷開方式主要有數量限制和時間限制,優點是在較短的時間內傳輸多個檔案不需要連線多次,一次即可傳輸完成。缺點是在有併發量的較大的web伺服器上長連線機制可能會導致某些使用者訪問無法響應。

keep-alive配置:

keepalive off | on			#關閉或者開啟

keepalive timeout 10 #超時時間

maxkeepaliverequests 100 #最大請求數

#可以使用telnet請求主頁頁面來測試

配置方式
#與worker很像這裡就不多做闡述了

startservers 3

minsparethreads 75

maxsparethreads 250

threadsperchild 25

maxrequestworkers 400

maxconnectionsperchild 0

程序和執行緒的概念以及如何創造執行緒

1 計算機的cpu承擔了所有的任務,他就像一座工廠,時刻在執行。2 cpu一次只能執行乙個任務,我們可以假定工廠的電力有限,一次只能供給乙個車間使用,也就是說乙個車間開工時,其他車間都必須停工。3 程序就好比工廠的車間,它代表著cpu所能處理的單個任務。任一時刻,cpu總是執行乙個程序,其他程序處於...

執行緒程序以及協程的區別

程序,儲存在硬碟上的程式執行之後,會在記憶體裡形成乙個獨立的記憶體體,這個記憶體體有自己獨立的位址空間,有自己的堆,上級掛靠單位是作業系統,作業系統會以程序為單位分配系統資源 cpu時間片,記憶體等資源 程序是資源分配的最小單位。執行緒也成為輕量級執行緒,是作業系統排程 cpu排程 執行的最小單位 ...

Apache崩掉 為程序配置合適的執行緒數

放假以來,伺服器apache二次崩掉了,不能再拖了,找bug解決 崩掉的具體狀況是,伺服器出現彈框顯示 apache停止工作 順手關掉這個可惡的小彈框,世界就清靜了,伺服器正常執行 檢視錯誤日誌 apache logs,找到關鍵報錯 mon aug 14 10 47 19.644531 2017 m...