版本:
阿里云专有云v2版本
问题现象:
同步任务反馈drds无法连接数据库,经排查drds manager 发现有一个节点异常
排查过程:
向现场运维组反馈该异常后,为了确保生产环境的使用,确定通过drds manager进行白屏重启。点击重启后,无法返回成功界面,又强制重启,还是没有响应。
然后尝试通过命令行连接到该docker,显示连接失败,无法ping通该docker。
通过天目发现该docker所在的物理机报机器故障。通过天目登录到远程机房主机进行重启,依然显示连接异常。(期间是对这个docker重启了好几次)
最后针对物理机故障的问题向客户反馈维修,物理机正常之后发现该docker还是连接异常,通过天目发现报错为检测失败。
登录到该docker节点上发现,java进程一直被重新拉起。时有时无。
并且在该drds上的tddl目录下发现大量的gc 日志。
从而说明了该docker的java进程一直被不断的重拉,每起来一次就会产生一个gc日志。
并且日志里面也只是存储了一些简单的信息
向drds研发同学咨询,发现drds的java进程pid内容和/home/admin/drds-server/bin/tddl_3306.pid内容比较发现进程的pid是不一致。
执行健康检查的脚本,可以判断服务是否正常,执行发现service is down
排查是否有进行手动kill,结果是没有。
经研发同学经验排查,发现该docker的nameserver有多个127.0.0.1
而正常的docker节点下,是只有一个的,如下:
解决方法:
经开发确认为,这个drds 的 docker节点在 专有云v2版本的bug。在频繁重启容器超过3次后,之后再每次重启容器都会在resolv.conf这个文件里面重复写入127.0.0.1。就会导致进程一直不断的被拉起。
根据研发的建议:
1、 先把多余的127.0.0.1删除 保留一个;
2、 把bin目录下的pid文件删除掉;
3、 停止drds-server进程;
4、 按照sudo -u admin sh /home/admin/drds-server/bin/startup.sh -p 3306 -D启动drds 的java进程;
重启之后,问题解决