Nginx
PHP 快速 cgi(與 NGINX 結合使用)在暫停時凍結
我為 Web 開發建立了一個非常小的本地網路。網路伺服器是一堆
- mysql 5.1.37
- NGINX 0.8.19
- 帶有 Suhosin-Patch 0.9.7 和 Xdebug v2.0.4 的 PHP 5.2.10
伺服器本身執行 ubuntu karmic 9.10。
為了向 NGINX 提供 PHP,我使用以下命令:
sudo /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
我的問題是,每天早上,當機器從掛起狀態恢復時,PHP 已經停止工作(在嘗試載入請求的頁面幾秒鐘後,在瀏覽器 NGINX 中顯示“錯誤網關”消息)。如果我嘗試重新啟動命令以重新生成 PHP,它會給我錯誤,說該地址已在使用中。
編輯:更多資訊
生成後,如果我執行,
ps ax | grep php
我會執行一個php-cgi
程序,而如果我在從掛起恢復後重新發出命令,我什麼也得不到,儘管如果我嘗試重新-產卵。我腦海中閃過的想法是 php-cgi 向其他程序註冊它的存在,它不會檢測到 php-cgi 的突然死亡和掛起,從而使地址保持忙碌。是真的嗎?!關於如何解決這個問題的任何想法?一個優雅的解決方案是最受歡迎的,但即使是一個骯髒的解決方法,使伺服器可以在沒有人工干預的情況下自我恢復也是可以的。這只是幾個人使用的內部生產伺服器。
提前感謝您的寶貴時間!
也許你可以從 spawn-fcgi切換到php-fpm ?
Karmic 仍然使用 pm-utils,對嗎?您需要一個腳本,
/etc/pm/sleep.d
該腳本將在掛起時停止伺服器,並在恢復時重新啟動它。範例腳本可能如下(根據需要調整掛起/恢復選項,但這應該為您提供正確的腳本結構)。如果您已經編寫了一個
/etc/init.d/foo
腳本以在啟動時啟動伺服器,您可能希望使用它來停止/啟動下面的伺服器。#!/bin/sh # # /etc/pm/sleep.d/10spawnfcgi case "$1" in hibernate|suspend) # example -- replace this with what works on your system killall spawn-fcgi # or better yet: # /etc/init.d/myFcgiServer stop ;; thaw|resume) # restart -- tweak to your liking, rerun your startup script, etc /usr/bin/spawn-fcgi -a 127.0.0.1 other-options-here # or better yet: # /etc/init.d/myFcgiServer start ;; *) exit $NA ;; esac