在MySQL运行的过程中,会发现MySQL的CPU很高,然后通过Show Processlist; 命令查看,发现有很多大量unauthenticated user进程卡住。
查阅mysql官方网站得知,这属于官方一个系统上的特殊设定,就把他当成mysql的一个bug算了。不管链接的的方式是经过 hosts 或是 IP 的模式,他都会对 DNS 做反查 mysqld 会尝试去反查 IP -> dns ,由于反查解析过慢,就会无法应付过量的查询。
如果处于公网上的MySQL出现大量的非法用户尝试登陆的情况,给服务器带来的负荷是不可想像的。
主要介绍解决方法如下:
1、在启动MySQL时,加上--skip-name-resolve
# /usr/local/mysql/bin/mysqld_safe --skip-name-resolve --user=mysql&
2、配置my.cnf在 [mysqld]下添加skip-name-resolve
[mysqld]
skip-name-resolve
3、在 /etc/hosts 添加IP与主机名对应关系 ,检查 /etc/resovle主DNS服务.
4、调整mysql max_connections,max_allowed_packet ,wait_timeout,interactive_timeout 参数