Home  >  Article  >  Database  >  Can’t connect to MySQL server有关linux tcp连接优化_MySQL

Can’t connect to MySQL server有关linux tcp连接优化_MySQL

WBOY
WBOYOriginal
2016-06-01 13:31:271611browse

bitsCN.com

Can’t connect to MySQL server有关linux tcp连接优化

 

最近有2台web机器链接mysql有时会出现Can’t connect to MySQL server的情况,查看exception日志:

 

如下:

 

[message:protected] => SQLSTATE[HY000] [2003] Can’t connect to MySQL server on ‘192.168.1.248′(99)

 

1):问题描述:

 

2台web机器,只有其中一台出现该exception,另外一台无此问题;

 

exception logs: Can’t connect to MySQL server on ‘*.*.*.*’ (99)

 

2):问题排查:

 

1、查看mysql的variables,status:

max_connect_errors = 50000max_connections = 1000max_user_connections = 200max_connect_errors = 50000max_connections = 1000max_user_connections = 200

 

 

2、ulimit -a:

 

3、查看netstat -anp

 

查看问题机器的netstat -anp,发现大部分都是TIME_WAIT,怀疑是tcp的问题;

 

将近有3万的网络套接字,此时CPU也耗尽,导致这么多的TCP/IP连接CPU处理不过来,而使部分TCP/IP连接超时或处理失败

 

3、OS:

 

more /etc/sysctl.conf:

 

net.ipv4.tcp_syncookies = 1

 

新的连接可以重新使用TIME-WAIT套接字

 

net.ipv4.tcp_tw_reuse=1

 

启动TIME-WAIT套接字状态的快速循环功能

 

net.ipv4.tcp_tw_recycle=1

 

套接字关闭时,保持FIN-WAIT-2状态的时间

 

net.ipv4.tcp_fin_timeout=30

 

对于所有协议的队列,设置最大系统发送缓存(wmen)和接收缓存(rmem)到8M

 

net.core.wmem_max=8388608

 

net.core.rmem_max=8388608

 

让参数生效。

 

3):问题原因:

 

报错”Can’t connect to MySQL server on ‘*.*.*.*’ (99) ” 参考MySQL Client端错误代码说明:错误代码为99,99的含义:$perror 99 OS error code  99:  Cannot assign requested address 这是一个本地OS的抛错,表示无法分配本地地址资源(应该是端口),socket无法创建

 

” Cannot assign requested address”,多半是由于客户端请求过于频繁,而Server端练级关闭后本地暂时处于TIME_WAIT,所以暂时端口都不可用导致。因此修改下OS参数就ok了

 

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn