Linux檔案控制代碼數導致php-cgi假死問題解決教程

來源:互聯網
上載者:User

最近,一台生產中的伺服器(CentOS 5.2 64位 4G記憶體),老是出現網站打不開,登入到伺服器上查看,發現Nginx和php-cgi都在運行,和平時不同的是此時php-cgi的 cpu佔用為0,馬上查看檔案控制代碼數限制
ulimit -n
得到的結果是:1024,這個值對生產中的服務顯得偏小。
網上給出的解決方案,大部分是直接輸入
ulimit -SHn 51200 # 51200可自己根據應用調整
此法缺點很明顯,一旦退出登陸,設定就失效了。
也有說直接把該命令寫到/etc/rc.d/rc.local中的,今天找到一個正確的做法
開啟/etc/security/limits.conf,裡面有很詳細的注釋,找到如下設定(如果沒有就插入)

 代碼如下 複製代碼
* soft nofile 51200
* hard nofile 51200

退出後再次登陸,查看控制代碼數,已經正確設定為51200。

如果有碰到類似情況,可以檢查一下看看是不是檔案控制代碼數設定太小引起的。


訪問時出現 502 Bad Gateway 的解決辦法

Nginx 502 Bad Gateway的含義是請求的php-cgi已經執行,但是由於某種原因(一般是讀取資源的問題)沒有執行完畢而導致php-cgi進程終止。一般並發數太高的網站都容易出現此錯誤。出現502 Bad Gateway的原因有很多,但是大部
分人修改下面的參數即可解決。
更改nginx的幾個配置項,減少FastCGI的請求次數,盡量維持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 檔案,修改如下幾個參數:

 代碼如下 複製代碼


<value name="max_children">25</value>
<value name="max_requests">2048</value>
<value name="rlimit_files">65535</value>

<value name="process_control_timeout">30s</value>
<value name="request_terminate_timeout">60s</value>

<value name="style">apache-like</value>

request_terminate_timeout指的是fast-cgi的執行指令碼時間,它預設是0s。0s的含義是讓php-cgi一直執行下去而沒有時間限制。如果你在此設成0s,那麼當出現502 Bad Gateway的時候,這個502的狀態將一直持續下去不會改變。但是如果你設定成5s,那麼當php-cgi假死5s以後會自動回復。這個值可以根據你伺服器的效能進行設定,這裡我設定的是60s。

max_children表示php-cgi的處理進程。如果max_children設定的較小,比如5-10個,那麼php-cgi就會“很累”,處理速度也很慢,等待的時間也較長。如果長時間沒有得到處理的請求就會出現504 Gateway Time-out錯誤。設定max_children也需要根據伺服器的效能進行設定,增大進程數,記憶體佔用也會相應增大,正常情況下每個php-cgi所耗費的記憶體在20M左右,這裡我設定的是25。
php-fpm的預設靜態處理方式會使得php-cgi的進程長期佔用記憶體而無法釋放,這也是導致nginx出錯的原因之一,因此可以將php-fpm的處理方式改成apache-like模式。
修改完成執行lu-restart 即可(LuManager伺服器管理系統)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.