一、问题现象
后端远程连接数据库的时候,间接性的断连,然后后端不停的重连,过一会儿就又自己连上了。然后这种现象就一直往复,导致后端几分钟崩一次。
二、排错
首先打印了一下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