美文网首页
ngrok 1.x 内存泄露 bug 的解决方案

ngrok 1.x 内存泄露 bug 的解决方案

作者: sprainkle | 来源:发表于2020-10-19 16:43 被阅读0次

    问题描述

    部署在服务器上的 ngrok server,时不时会出现内存泄露而导致程序被杀掉,不厌其烦,作者也说了有严重的内存泄漏等问题,且不再维护。

    解决方案

    既然官方已经不维护了,也就无法从软件层面去解决问题,那只能另辟蹊径了。

    首先要明白一点,当 ngrok server 进程被杀死后,客户端其实会有重连机制的。基于这一点,我们只有保证当ngrok server 进程死掉后,自动再重新启动即可。

    具体做法为,定时监控 ngrok server 进程是否还在运行,如果已被杀死,则重启,下面直接上脚本。

    auto_restart_ngrok.sh

    新建 auto_restart_ngrok.sh 文件,具体位置自己定,为了方便,我直接放 root 用户的 home 目录下。

    将下面的脚本拷贝到 auto_restart_ngrok.sh 文件中,其中 你的ngrok启动脚本,需要替换成自己的启动脚本,比如 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启动脚本`
    fi
    

    设置定时任务

    # 编辑工作表
    crontab -e
    
    # 进入编辑模式后,将下面的脚本插在最下方,最后保存退出就可以啦
    */1 * * * * /root/auto_restart_ngrok.sh
    

    目前按照这个方案,已经运行一小段时间了,大致没什么问题,如果有什么坑,会及时在这里更新的~~~

    完!

    相关文章

      网友评论

          本文标题:ngrok 1.x 内存泄露 bug 的解决方案

          本文链接:https://www.haomeiwen.com/subject/eslkmktx.html