出现一个unauthenticated user的线程,用kill命令,怎么也关不掉,后来查了一下,是
mysql里面的一个bug,方法很简单,如下:
最近数据库经常出现异常停顿和阻塞,通过show processlist发现大量类似如下的连接:
|592|unauthenticated user|192.168.3.20:35320|NULL|Connect| |login|NULL|
|593|unauthenticated user|192.168.3.20:35321|NULL|Connect| |login|NULL|
|594|unauthenticated user|192.168.3.20:35322|NULL|Connect| |login|NULL|
|593|unauthenticated user|192.168.3.20:35321|NULL|Connect| |login|NULL|
|594|unauthenticated user|192.168.3.20:35322|NULL|Connect| |login|NULL|
google后发现和域名解析有关系。
不管连接的方式是经过hosts或是IP,mysql都会对DNS做反查
mysql尝试反查IP->DNS,由于反查解析过慢或出问题,无法应对快速多量的查询
3种解决方法(前2种解决方法的缺点是不能再使用主机名,而要使用IP地址):
- 在启动参数中添加--skip-name-resolve,关闭反向域名解析功能
- 在my.cnf的[mysqld]一节中增加skip-name-resolve
- 在/etc/hosts文件中添加对应的host记录
考虑目前情况,使用了第2种方法