1. 程式人生 > >PHP問題解決記錄

PHP問題解決記錄

 

1)Apache記憶體溢位嚴重,很惱火

https://www.cnblogs.com/hhccdf/p/7360311.html

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

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

崩掉的具體狀況是,伺服器出現彈框顯示:Apache停止工作;
順手關掉這個可惡的小彈框,世界就清靜了,伺服器正常執行;

具體問題:


檢視錯誤日誌\Apache\logs,找到關鍵報錯:

[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針對不同的作業系統提供了多個不同的MPM模組,例如:mpm_beosmpm_eventmpm_netwarempmt_os2mpm_preforkmpm_winntmpm_worker
Windows作業系統上預設的MPM模組是mpm_winntmpm_winnt模組是專門針對Windows作業系統而優化設計的MPM模組。它只建立一個單獨的子程序,並在這個子程序中輪流產生多個執行緒來處理請求。
在對Apache的MPM模組具備一定了解後,我們就可以針對不同的MPM模組來修改Apache的最大併發連線數配置了。

報錯解決:


修改MPM模組配置

1 啟用MPM模組配置檔案

在Apace安裝目錄/conf/extra目錄中有一個名為httpd-mpm.conf的配置檔案。該檔案主要用於進行MPM模組的相關配置。不過,在預設情況下,Apache的MPM模組配置檔案並沒有啟用。因此,我們需要在httpd.conf檔案中啟用該配置檔案,如下所示:

# 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,啟動成功了,接下來幾天是觀察時間了;有錯的話再更新文章!

 

2)Running artisan from cron returns Undefined index argv

https://github.com/laravel/framework/issues/3469

register_argc_argv is off