早上打开浏览器准备登陆某个系统,发现Error 404--Not Found,有点奇怪,这个服务器应该没人用了才对,然后到weblogic后台去看日志,报如下错误:
“Could not create pool connection. The DBMS driver exception was: null, message from server: "Host '192.168.XX.XX' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'”
首先我使用的是mysql数据库
到网上搜罗了一下相关错误,发现是因为“同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;”
既然知道了原因,就好解决了:提高max_connection_errors的值或者清除缓存
1.清除缓存
cmd窗口远程连接数据库,执行flush hosts;
2.提高max_connection_errors的值
首先查看该属性设置为多大
命令:show global variables like '%max_connect_errors%';
当客户端连接服务端超时(超过connect_timeout), 服务端就会给这个客户端记录一次error,当出错的次数达到max_connect_errors的时候,这个客户端就会被锁定。所以根据业务来尽量把这个值设置大一点,我们可以根据具体需要设置大一点,这里设置为1000.(并非越大越好,越大被攻击时安全性越低)。
使用命令:set global max_connect_errors=1000;
如果需要永久生效,得去修改mysql配置文件里相应属性。可能配置文件里没有这个属性,需要自己手动添加:
参考文章:https://jingyan.baidu.com/album/9f7e7ec087dcbe6f2815542d.html