在某些情況下,如系統負載過大swoole無法申請到記憶體而掛掉、swoole底層發生段錯誤、server占用記憶體過大被核心kill,或者被某些程式誤殺。那swoole-server將無法提供服務,導致業務中斷,公司收入出現損失。
有乙個非常有效並且在bat等大型公司常用的方案是crontab重啟監控。
原理是每1分鐘執行一次shell指令碼,檢測server的master程序是否存活,如果存在則跳過。如果發現主程序已經掛掉,則執行restart邏輯,先kill掉所有殘留的子程序,然後重新啟動server。
shell指令碼
使用下面的指令碼需要將server程式的程序名稱設定為master,如 cli_set_process_title(「php server.php: master」)/data/script/check_server.sh:
count=`ps -fe |grep "server.php" | grep -v "grep" | grep "master" | wc -l`
echo $count
if [ $count -lt 1 ]; then
ps -eaf |grep "server.php" | grep -v "grep"| awk ''|xargs kill -9
sleep 2
ulimit -c unlimited
/usr/local/bin/php /data/webroot/server.php
echo "restart";
echo $(date +%y-%m-%d_%h:%m:%s) >/data/log/restart.log
fi
或者
count=`netstat -nutl | grep 9503 | grep "listen" | wc -l`
#echo $count
if [ $count -lt 1 ];then
nohup php /var/www/html/swoole_imooc/thinkphp/server/ws.php >> /var/log/swoole/swoole.log &
echo "restart".$(date +%y-%m-%d_%h:%m:%s) >> /var/log/swoole/restart.log
fi
php指令碼
class monitor
.log | wc -l";
//記錄到日誌檔案
if(shell_exec($file) == 0).log");
}//將重啟時間追加到日誌檔案中
$log ="echo .'|restart' >> /var/log/swoole/.log";
shell_exec($log);
shell_exec($restart_shell);
}else
}}//執行一次
$monitor = new monitor();
$monitor->swoole();
將上述指令碼加入到定時任務中,每分鐘執行,即可實現swoole服務無人值守,100可用了。 如何做映象伺服器
問題 因為現在電信和網通的原因,很多網通的朋友總是反應速度慢,鬱悶啊,我看到有的站可以自行選擇是網通還是電信的,不知道,這個功能是怎麼是實現的?答案 然後在你每個空間的根目錄放 1個較大 1.gif 最好 30 kb左右 答案 第一次執行網路傳神的時候,它會讓你選擇 完全模式 和 啟動模式 要使用 ...
Swoole之伺服器配置
document,設定對應目錄,如果找得到對應目錄,則下面 不執行 測試案例 ws client.html 新建ws.php class ws 監聽ws連線事件 param ws param request public function onopen ws,request 監聽ws訊息事件 收到客...
linux伺服器swoole公升級
root vm 0 2 centos wget c root vm 0 2 centos tar zxvf swoole 4.2.12.tgz 2 進入解壓後的目錄cd swoole 4.2.12 3 執行phpize 來生成php編譯配置 phpize 4 執行編譯配置檢測命令 configure...