Nginx

PHP 快速 cgi(與 NGINX 結合使用)在暫停時凍結

  • February 22, 2016

我為 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

引用自:https://serverfault.com/questions/87700