溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux下php-cgi停止的解決方法

發(fā)布時間:2021-09-26 17:01:09 來源:億速云 閱讀:190 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“l(fā)inux下php-cgi停止的解決方法”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“l(fā)inux下php-cgi停止的解決方法”這篇文章吧。

linux下php-cgi停止的解決方法是:更改nginx的配置項,減少FastCGI的請求次數(shù),盡量維持buffers不變即可,例如【fastcgi_buffer_size 128k;】。

本文操作環(huán)境:linux 5.9.8、php 7、thinkpad t480電腦。

前言:

偶然發(fā)現(xiàn)一臺生產(chǎn)中的服務器(centos 5.2 64位 4G內(nèi)存)總是出現(xiàn)網(wǎng)站打不開的問題。后來就去服務器上看了下,結(jié)果發(fā)現(xiàn)nginx和php-cgi都在運行狀態(tài),但是此時php-cgi的cpu占用為0。于是我馬上查看了文件句柄數(shù)限制:

ulimit -n

得到的結(jié)果是:1024,這個值對生產(chǎn)中的服務顯得偏小。

網(wǎng)上給出的解決方案,大部分是直接輸入

ulimit -SHn 51200 # 51200可自己根據(jù)應用調(diào)整

此法缺點很明顯,一旦退出登陸,設置就失效了。

也有說直接把該命令寫到/etc/rc.d/rc.local中的,今天找到一個正確的做法

打開/etc/security/limits.conf,里面有很詳細的注釋,找到如下設置(如果沒有就插入)

代碼如下

* soft nofile 51200
* hard nofile 51200

退出后再次登陸,查看句柄數(shù),已經(jīng)正確設置為51200。

如果有碰到類似情況,可以檢查一下看看是不是文件句柄數(shù)設置太小引起的。

訪問時出現(xiàn) 502 Bad Gateway 的解決辦法

Nginx 502 Bad Gateway的含義是請求的php-cgi已經(jīng)執(zhí)行,但是由于某種原因(一般是讀取資源的問題)沒有執(zhí)行完畢而導致php-cgi進程終止。一般并發(fā)數(shù)太高的網(wǎng)站都容易出現(xiàn)此錯誤。出現(xiàn)502 Bad Gateway的原因有很多,但是大部分人修改下面的參數(shù)即可解決。

更改nginx的幾個配置項,減少FastCGI的請求次數(shù),盡量維持buffers不變:

代碼如下

fastcgi_buffer_size 128k;
fastcgi_buffers 2 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;

打開 /usr/local/php/etc/php-fpm.conf 文件,修改如下幾個參數(shù):

代碼如下

25
requests">2048
65535
30s
60s

request_terminate_timeout指的是fast-cgi的執(zhí)行腳本時間,它默認是0s。0s的含義是讓php-cgi一直執(zhí)行下去而沒有時間限制。如果你在此設成0s,那么當出現(xiàn)502 Bad Gateway的時候,這個502的狀態(tài)將一直持續(xù)下去不會改變。但是如果你設置成5s,那么當php-cgi假死5s以后會自動恢復。這個值可以根據(jù)你服務器的性能進行設定,這里我設置的是60s。

max_children表示php-cgi的處理進程。如果max_children設置的較小,比如5-10個,那么php-cgi就會“很累”,處理速度也很慢,等待的時間也較長。如果長時間沒有得到處理的請求就會出現(xiàn)504 Gateway Time-out錯誤。設置max_children也需要根據(jù)服務器的性能進行設定,增大進程數(shù),內(nèi)存占用也會相應增大,正常情況下每個php-cgi所耗費的內(nèi)存在20M左右,這里我設置的是25。

php-fpm的默認靜態(tài)處理方式會使得php-cgi的進程長期占用內(nèi)存而無法釋放,這也是導致nginx出錯的原因之一,因此可以將php-fpm的處理方式改成apache-like模式。

修改完成執(zhí)行l(wèi)u-restart 即可(LuManager服務器管理系統(tǒng))。

以上是“l(fā)inux下php-cgi停止的解決方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI