美文网首页
定时安全重启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