作者:fbysss
QQ:溜酒酒吧酒吧吾散
blog:blog.csdn.net/fbysss

声明:本文由fbysss原创,转载请注明出处

背景:

在调试程序的时候,发现数据库访问相关的环节出现错误:

12:16:40,941  WARN ThreadPoolAsynchronousRunner:608 - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1278b126 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
12:16:40,947  WARN ThreadPoolAsynchronousRunner:624 - com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@1278b126 -- APPARENT DEADLOCK!!! Complete Status: 

检查配置项,一切正常。

分析:

1.进入命令行,telnet serverip 3306,是有响应的。

2.用mysql客户端直接连接测试:mysql -hdbhost -uusername -p,报错:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 

3.这种情况还真没遇到过。搜索一下,很多答案,无非是在my.cnf中去掉bind-address或者添加skip-name-resolve 以加速客户端连接速度。

看了一下配置文件,第一个根本就没有,第二个加了也没用。

其实仔细分析一下,刚才还好好的,突然不行了。最大的可能不在于服务器本身,而是网络或者服务器之外的环境。

4.关闭防火墙:虽然可以telnet通,还是关闭一下试试吧。服务器和客户端的防火墙都关了,还是一样。

5.尝试换一个端口号呢?于是,在my.cnf中,[mysqld]端增加一句:port=3307

sudo service mysqld restart,再试,居然OK了。


结论:

因为这台服务器只有本人在使用,所以,很大可能性,是阿里云服务器环境上有什么外围的设置导致了这个问题。

以上分析过程,希望可以给出现类似问题的同仁带来启发,迅速解决问题。




Logo

快速构建 Web 应用程序

更多推荐