問題1: redis-server啓動後,redis-client鏈接成功,set時無反應,查看redis-server進程存在。
問題2: nginx,php-fpm,訪問html頁面正常,訪問php頁面每次出現504錯誤,修改配置文件調大響應時間均無效。php
這兩個問題不是同一天遇到的,究根結底緣由是同樣的。奇葩的是nginx以前運行的好好的,忽然就504了怎麼改也回不來了,修改配置文件,查看錯誤日誌,重啓,重裝軟件,這些嘗試後都沒有效果。 google有說把php-fpm的listen由ip加端口號改爲sock的,試了也沒有效果。後來讓php-fpm在後臺運行,問題就沒有了。redis-server也是一樣。html
運行方式錯誤
啓動php-fpm和redis-server的時候我是前臺運行,而後ctrl-z的,這樣進程就處於掛起狀態了。php-fpm超時,redis沒反應也就不難理解了。讓進程在後臺可靠運行的幾種方法。
ctrl-c 是發送SIGINT信號,終止一個進程;ctrl-z 是發送 SIGSTOP信號,掛起一個進程;ctrl-d 不是發送信號,而是表示一個特殊的二進制值,表示 EOF。能夠經過jobs查看當前有多少在後臺運行的命令;經過fg命令將後臺中的命令調至前臺繼續運行;也能夠用bg將一個在後臺暫停的命令,變成繼續執行 (在後臺執行)。linux
在ps查看進程狀態的時候忽略了進程的狀態
常見的進程狀態:
D 不可中斷 Uninterruptible(usually IO)
R 正在運行,或在隊列中的進程
S 處於休眠狀態
T 中止或被追蹤
Z 殭屍進程
W 進入內存交換(從內核2.6開始無效)
X 死掉的進程
<高優先級
n低優先級
s包含子進程
+位於後臺的進程組
在前臺運行php-fpm而後ctrl-z狀態是T,而正常運行時看到的是S,有的是Ss,Ss的那個主進程。nginx
更好的啓動方式
編寫php-fpm啓動腳本/etc/init.d/php-fpm,加入到service中,經過service來管理php-fpm的啓動。redis