問題描述
部署在服務(wù)器上的 ngrok server
御吞,時(shí)不時(shí)會(huì)出現(xiàn)內(nèi)存泄露而導(dǎo)致程序被殺掉,不厭其煩,作者也說了有嚴(yán)重的內(nèi)存泄漏等問題奇昙,且不再維護(hù)。
解決方案
既然官方已經(jīng)不維護(hù)了敌完,也就無法從軟件層面去解決問題储耐,那只能另辟蹊徑了。
首先要明白一點(diǎn)蠢挡,當(dāng) ngrok server
進(jìn)程被殺死后弧岳,客戶端其實(shí)會(huì)有重連機(jī)制的凳忙。基于這一點(diǎn)禽炬,我們只有保證當(dāng)ngrok server
進(jìn)程死掉后涧卵,自動(dòng)再重新啟動(dòng)即可。
具體做法為腹尖,定時(shí)監(jiān)控 ngrok server
進(jìn)程是否還在運(yùn)行柳恐,如果已被殺死,則重啟热幔,下面直接上腳本乐设。
auto_restart_ngrok.sh
新建 auto_restart_ngrok.sh 文件,具體位置自己定绎巨,為了方便近尚,我直接放 root 用戶的 home 目錄下。
將下面的腳本拷貝到 auto_restart_ngrok.sh 文件中场勤,其中 你的ngrok啟動(dòng)腳本戈锻,需要替換成自己的啟動(dòng)腳本,比如 nohup /opt/local/ngrok/bin/ngrokd -domain="ngrok.sprainkle.com" -httpAddr=":8002" -httpsAddr=":8003" -tunnelAddr=":4000" > /dev/null 2>&1 &
#!/bin/bash
result=`ps -ef | grep ngrokd | awk '{print $8}' | sed -n 'p'`
running=0
for r in $result
do
if [[ $r =~ "ngrokd" ]];then
echo "ngrok is still running."
running=1
fi
done
if [ $running == 0 ]
then
`你的ngrok啟動(dòng)腳本`
fi
設(shè)置定時(shí)任務(wù)
# 編輯工作表
crontab -e
# 進(jìn)入編輯模式后和媳,將下面的腳本插在最下方格遭,最后保存退出就可以啦
*/1 * * * * /root/auto_restart_ngrok.sh
目前按照這個(gè)方案,已經(jīng)運(yùn)行一小段時(shí)間了留瞳,大致沒什么問題拒迅,如果有什么坑,會(huì)及時(shí)在這里更新的~~~
完她倘!