一个 Mysql 主数据库服务器和 5 个连接到主服务器的远程 Web 服务器。Web 服务器是使用自定义 PHP 代码和 redis 缓存的 ubuntu 服务器。网站随机显示以下错误。所有服务器都在 aws 上运行。
无法连接到 MySQL 服务器 mysql-server-ip (99)
此外,apache 日志显示相同错误 PHP 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[HY000] [2003] 无法连接到‘server-ip’ (99) 上的 MySQL 服务器”
我尝试增加 my.cnf 文件上的 max_connections 变量
SHOW GLOBAL STATUS LIKE 'Max_used_connections';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 738 |
+----------------------+-------+
SHOW VARIABLES LIKE "max_connections";
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 12000 |
+-----------------+-------+
my.cnf
文件
skip_external_locking = 1
thread_cache_size = 24
table_open_cache = 2048
table_definition_cache = 512
back_log = 128
max_connections = 12000
max_connect_errors = 10000
open-files-limit = 20000
interactive_timeout = 60
wait_timeout = 1200
net_read_timeout = 300
net_write_timeout = 300
netstat -nat | grep 3306|grep TIME_WAIT |wc -l
93
netstat -anp | grep :3306 | grep ESTABLISHED | wc -l
13
cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
数据库服务器上的大多数 TIME_WAIT 连接来自 Web 服务器