docker hang 异常处置

1 consul maint维护模式 /home/qboxserver/consul/current/bin/consul maint -enable
2、尝试重启 docker
3、2成功→4; 2失败→ 5
4、重启cadvisor 和 mesos-agent
5、重启机器,照机器重启的步骤恢复
6、supervisorctl restart dockerd
7、supervisorctl restart boots-cadvisor mesos-agent

退出维护模式: /home/qboxserver/consul/current/bin/consul maint -disable

该脚本启动方式为screen
SESSION_NAME="kill_hulk_app"; screen -ls | grep "${SESSION_NAME}" > /dev/null; [ "$?" != "0" ] && screen -d -m -S "${SESSION_NAME}" bash /root/kill_hulk_app.sh; screen -ls; echo
处理脚本
sed -i '10s/20/17/g' /root/kill_hulk_app.sh &&cat /root/kill_hulk_app.sh
#清理对应screen内进程pid
screen -ls | grep kill_hulk_app | cut -d. -f1 |xargs kill
#重新启动脚本
SESSION_NAME="kill_hulk_app"; screen -ls | grep "${SESSION_NAME}" > /dev/null; [ "$?" != "0" ] && screen -d -m -S "${SESSION_NAME}" bash /root/kill_hulk_app.sh; screen -ls; echo && screen -ls | grep kill_hulk_app | cut -d. -f1
脚本内容:

cat kill_hulk_app.sh
#!/bin/bash

function log() {
    echo $(date +"%Y-%m-%d %H:%M:%S"): "$@" | tee -a kill_hulk_app.log
}

while true; do
    log "start"

    HULKS=$(docker ps -s --format '{{.ID}} {{.Size}}' | awk -F ' ' '$3=="GB" && $2 > 17 {print $1}')
    log "find hulks: " ${HULKS}
    for HULK in ${HULKS}; do
        log "container id to stop: " ${HULK}
    log $(docker inspect ${HULK} | grep instance_id)
    log $(docker ps -s --format '{{.ID}} {{.Size}}' | grep ${HULK})
        if [ "${HULK}" != "" ]; then
            log "stop && rm : " ${HULK}
            docker stop ${HULK} && docker rm ${HULK}
            log $?
        fi
    done

    log "sleep 300s"
    sleep 300
done

转载于:https://blog.51cto.com/daixuan/2360512

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值