美文网首页
定时安全重启eos和mongodb

定时安全重启eos和mongodb

作者: 凌利新 | 来源:发表于2018-11-21 12:56 被阅读0次

    在eos同步mongodb的过程中, 如果mongodb产生异常, 比如查询延迟太大,  会产生handle_mongo_exception,  然后主动关闭eos, 作为一致性保护措施, 可以理解eos的用心.  

    另一个问题, mongodb数据库的查询不像mysql这样严格,  如果查询了一个错误的字段,  mysql会立即返回错误,  mongodb的做法是全表扫描, 这样实在过分,  也间接导致了eos同步的超时.

    为了解决上述问题, 这里采用粗暴但安全的手段, 定时重启eos和mongo, 下面贴一下脚本



    start_eos.sh

    #!/bin/sh

    echo start eos ...

    /usr/local/bin/nodeos -d /mnt/eos 2>&1 | tee ./eos.log &

    start_mongo.sh

    #!/bin/sh

    echo start mongo ...

    /root/mongodb-linux-x86_64-rhel70-4.0.4/bin/mongod -f /etc/mongod.conf

    stop_eos.sh

    #!/bin/sh

    ./pkill_proc.sh nodeos

    stop_mongo.sh

    #!/bin/sh

    ./pkill_proc.sh mongod

    停止并等待某后台进程结束的子脚本

    pkill_proc.sh

    #!/bin/sh

    echo -n "stop $1 "

    pkill $1

    while :

    do

      echo -n "."

      sleep 1

      count=`ps -ef | grep -w "$1" | grep -v "grep"|grep -v "pkill" | wc -l`

      if [ $count -eq 0 ]; then

        break

      fi

    done

    echo " "

    重新启动eos和mongo

    restart_eos_mongo.sh

    #!/bin/sh

    cd /root

    ./stop_eos.sh

    ./stop_mongo.sh

    ./start_mongo.sh

    if [ $? -eq 0 ]; then

      ./start_eos.sh

    else

      echo start mongo failed

    fi

    定时重启

    crontab -e

    0 */1 * * * /root/restart_eos_mongo.sh


    相关文章

      网友评论

          本文标题:定时安全重启eos和mongodb

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