一、问题现象

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

二、排错

首先打印了一下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

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐