同一个ip在短时间内产生太多(超过mysql数据库max_connect_errors的最大值)中断的数据库连接而导致的阻塞;默认max_connect_errors是10
解决方法:
1、提高允许的max_connection_errors数量(治标不治本):
① 进入Mysql数据库查看max_connect_errors: show variables like '%max_connection_errors%';
② 修改max_connection_errors的数量为1000: set global max_connect_errors = 1000;
③ 查看是否修改成功:show variables like '%max_connection_errors%';
2、使用mysqladmin flush-hosts 命令清理一下hosts文件(不知道mysqladmin在哪个目录下可以使用命令查找:whereis mysqladmin);
① 在查找到的目录下使用命令修改:/usr/bin/mysqladmin flush-hosts -h192.168.1.1 -P3306 -uroot -prootpwd;
注意:
其中端口号,用户名,密码都可以根据需要来添加和修改;
配置有master/slave主从数据库的要把主库和从库都修改一遍的;
第二步也可以在数据库中进行,命令如下:flush hosts;
mysql错误日志:cat /var/log/mysqld.log
150422 14:10:01 [Warning] IP address '172.17.1.69' could not be resolved: Name or service not known
150422 14:10:01 [Warning] IP address '192.168.120.1' could not be resolved: Name or service not known
150422 14:10:02 [Warning] IP address '192.168.80.1' could not be resolved: Name or service not known
错误日志有大量的连接错误,可能是这些连接错误堆积起来达到了100,
如果程序连接中都是用的ip的话(就是连接mysql时用的是:mysql -h 123.123.123.123 而不是 mysql -h hostname),可以考虑skip-name-resolve设置为ON,不再进行反解析,加快数据库连接反应时间
mysql> set global skip_name_resolve=ON;
mysql> show variables like '%skip%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| skip_external_locking | ON |
| skip_name_resolve | ON |
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_skip_errors | OFF |
| sql_slave_skip_counter | 0 |
+------------------------+-------+
6 rows in set (0.00 sec)
设置好变量值后,flush hosts;生效
mysql>flush hosts;
|
|
|
|
|
版权说明:论坛帖子主题均由合作第三方提供并上传,若内容存在侵权,请进行举报