按经验怀疑dns反查是可能原因,检查配置文件/etc/resolv.conf,发现里面填写DNS的服务器,但是10是内网机器ping不通。
原因:
连接建立时,mysql进行DNS反查,但是DNS连不上,于是一直等待到超时。
处理:
在配置文件my.cnf中加上skip_name_resolve,重启mysql后问题消失。
----------------
后来还遇到过一例Java连MySQL报错:Cannot create PoolableConnectionFactory (Access denied for user ‘*@*’ (using password: YES)) ,经查也是同样问题,现在过手
的MySQL都先加上skip_name_resolve参数。
-----------------
对于一些没有使用连接池的APP,优化连接速度的建议
skip_name_resolve #跳过DNS反查,能提高连接速度
back_log = 120 #在堆栈内缓存建立连接的资源,能支持短时间快速建立大量连接
thread_cache_size = 128 #把连接创建的线程缓存,下次复用