swoole伺服器如何做到無人值守100 可用

2021-09-10 07:30:30 字數 1599 閱讀 6858

在某些情況下,如系統負載過大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...