Apache崩掉:爲進程配置合適的線程數

放假以來,服務器Apache二次崩掉了,不能再拖了,找bug解決;

崩掉的具體情況是,服務器出現彈框顯示:Apache中止工做;
順手關掉這個可惡的小彈框,世界就清靜了,服務器正常運行;php

具體問題:


查看錯誤日誌\Apache\logs,找到關鍵報錯:html

[Mon Aug 14 10:47:19.644531 2017] [mpm_winnt:error] [pid 5776:tid 4144] AH00326: Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

報錯表示進程的線程數不夠用,能夠修改ThreadsPerChild,即每一個子進程開啓的併發線程數。apache

報錯分析:


Apache針對不一樣的操做系統提供了多個不一樣的MPM模塊,例如:mpm_beosmpm_eventmpm_netwarempmt_os2mpm_preforkmpm_winntmpm_worker
Windows操做系統上默認的MPM模塊是mpm_winntmpm_winnt模塊是專門針對Windows操做系統而優化設計的MPM模塊。它只建立一個單獨的子進程,並在這個子進程中輪流產生多個線程來處理請求。
在對Apache的MPM模塊具有必定了解後,咱們就能夠針對不一樣的MPM模塊來修改Apache的最大併發鏈接數配置了。ubuntu

報錯解決:


修改MPM模塊配置服務器

1 啓用MPM模塊配置文件併發

在Apace安裝目錄/conf/extra目錄中有一個名爲httpd-mpm.conf的配置文件。該文件主要用於進行MPM模塊的相關配置。不過,在默認狀況下,Apache的MPM模塊配置文件並無啓用。所以,咱們須要在httpd.conf文件中啓用該配置文件,以下所示:ide

# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf (去掉該行前面的註釋符號"#")

2 修改MPM模塊配置文件中的相關配置優化

修改http-mpm.conf文件網站

#因爲mpm_winnt模塊只會建立1個子進程,所以這裏對單個子進程的參數設置就至關於對整個Apache的參數設置。

<IfModule mpm_winnt_module>
ThreadsPerChild      521 #默認值是150,推薦設置:小型網站=1000 中型網站=1000~2000 大型網站=2000~3500
MaxRequestsPerChild    3000 #推薦設置:小=10000 中或大=20000~100000
</IfModule>

3 重啓phpstudy,啓動成功了,接下來幾天是觀察時間了;有錯的話再更新文章!操作系統

更多文章能夠來個人我的博客裏面看到

歡迎來訪:綿綿小站

參考文章:


相關文章
相關標籤/搜索