[root@www ~]# netstat -na |grep 3306
tcp 1 0 ::ffff:127.0.0.1:60129 ::ffff:127.0.0.1:3306 CLOSE_WAIT
tcp 1 0 ::ffff:127.0.0.1:61321 ::ffff:127.0.0.1:3306 CLOSE_WAIT
tcp 1 0 ::ffff:127.0.0.1:60458 ::ffff:127.0.0.1:3306 CLOSE_WAIT
tcp 1 0 ::ffff:127.0.0.1:60554 ::ffff:127.0.0.1:3306 CLOSE_WAIT
tcp 1 0 ::ffff:127.0.0.1:58097 ::ffff:127.0.0.1:3306 CLOSE_WAIT
tcp 1 0 ::ffff:127.0.0.1:58117 ::ffff:127.0.0.1:3306 CLOSE_WAIT
tcp 1 0 ::ffff:127.0.0.1:58266 ::ffff:127.0.0.1:3306 CLOSE_WAIT
tcp 1 0 ::ffff:127.0.0.1:58366 ::ffff:127.0.0.1:3306 CLOSE_WAIT
tcp 1 0 ::ffff:127.0.0.1:57586 ::ffff:127.0.0.1:3306 CLOSE_WAIT
tcp 1 0 ::ffff:127.0.0.1:57854 ::ffff:127.0.0.1:3306 CLOSE_WAIT
tcp 1 0 ::ffff:127.0.0.1:59090 ::ffff:127.0.0.1:3306 CLOSE_WAIT
[root@www ~]# netstat -na |grep 3306 |grep CLOSE_WAIT |wc -l
313
mysql 大量 CLOSE_WAIT 存在
查网上方法:
mysql 3306 端口 close_wait引起的原因分析
1.域名解析引起
解决方法,启动参数加入--skip-name-resolve
2.ipv6引起close_wait(这个是比较重要的)
关闭ipv6功能
从新启动mysql服务
3.由于应用连接数据库的wait_timeout和mysql数据库的参数wait_timeout不一致造成
修该my.cnf
wait_timeout=“3600"
3600和你的应用timeout时间一至。
其他都试了,当时对“关闭ipv6功能”没在注意,因为我的network 文件中NETWORKING_IPV6=no,我以为关了,network 文件以下(Centos 5.5):
[root@www ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=www.yuegouok.com
GATEWAY=114.*.* .*
查了网上资料才发现Centos 5.5 IPV6 关闭并不这么简单:
CentOS 5.5关闭IPV6
可以修改下面两个文件以阻止IPv6内核模块的加载:
/etc/modprobe.conf – 内核模块配置文件
/etc/sysconfig/network – 网络配置文件
1. # vim /etc/modprobe.conf
在其中加入下面这一行,
install ipv6 /bin/true
保存并退出。
2. # vim /etc/sysconfig/network
在其中加入下面配置项:
NETWORKING_IPV6=no
IPV6INIT=no
保存并退出文件,重启网络与服务器:
# service network restart
# rmmod ipv6
# reboot
如果想检查当前IPv6是否已禁用,可以使用下列命令:
# lsmod | grep ipv6
# ifconfig -a
参考:http://suchalin.blog.163.com/blog/static/55304677201072304620312/
http://www.grapenvine.cn/post-46.html
转载于:https://blog.51cto.com/comtv/722655