一、问题现象

后端远程连接数据库的时候,间接性的断连,然后后端不停的重连,过一会儿就又自己连上了。然后这种现象就一直往复,导致后端几分钟崩一次。

二、排错

首先打印了一下docker的日志,发现出现很多的 [Server] /usr/sbin/mysqld: Forcing close of thread 106 user: 'root'.,然后网上搜了一下原因,这是由于mysql自身的原因:dns反查。

通过hosts或者ip的方式,MySQL都会对DNS做反查,IP到DNS,由于反查的接续速度过慢,就难以应付大量的查询,当线程不够用时,就一直增加线程,但是却得不到释放,所以MySQL会“ 假死”,导致连接出现问题。

三、解决

  • 在mysql配置文件my.cnf中的[mysqld]下添加(亲测有效)
      skip-name-resolve
  • my.ini添加的内容:
      skip-locking
      skip-name-resolve
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐