centos7上rc.local引起的问题

近日我司在centos7上运行同花顺手机接入相关服务时,发现早上过来检查出现mobihq连接不上mysql数据库情况,而重启mobi服务又可以连上,非常奇怪,开始以为是mariadb数据库默认连接8小时问题,配置max_connections=4096
wait_timeout=2880000
interactive_timeout = 2880000
后,还是发现第二天过来会出现连接不上数据库情况。继续咨询开发商同花顺,反馈部分券商每天早上重启mobi服务,虽然理论上可行,但感觉该方案不是很合适,毕竟还不知道什么情况下导致该现象,而且这种方式也解决不了全部时间段连接数据库正常,继续摸索。
思考了半天,试着研究停启mariadb库mobihq能否自动连接,发现还是可以自动连接,没办法,突然想到是不是计划任务每天重启引起,试着手动重启服务器后,确实通过netstat -nao|grep 3306发现没有正常连接到本地mariadb库,只连接上其他机器上注册数据库。估计是启动脚本问题,通过查找资料,了解到centos7后systemd启动进程负责启动服务,相关服务之间没有依赖关系,故可能原因为mobi先启动,mariadb后启动,但与测试发现mobi能重连mariadb确实违背,考虑到机器启动可能不同,还是抱着试试心态看看是不是这个原因,继续研究。
通过命令systemd-analyze blame 和systemd-analyze plot > boot.svg 发现确实mobi比mariadb先启动(mariadb.service和mobi对应服务rc-local.service)。为保证rc.local比mariab后启动,在rc.local脚本中mobi启动前增加了sleep 10 及最后一行增加了exit 0。重启发现确实可以正常连接数据库了。
建议今后centos7后尽量采用systemd来配置服务,尽量不要采用rc.local,而且注意各服务直接优先级,虽然很多程序之间有重连机制,但对机器启动时,相关可能依赖了其他服务,需要根据情况进行分析排查。
参考文献:
https://blog.csdn.net/boyemachao/article/details/113589695?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-2&spm=1001.2101.3001.4242
https://www.jianshu.com/p/6efacf467630

上一篇:字节跳动NLP算法面试题整理


下一篇:Python 的三目运算