从networking到数据库服务器的连接数量非常大

我运行2台服务器,1个networking(nginx / php),1个数据库(mysql)。

Nginx每秒有大约1500个活动进程,而mysql状态平均显示大约15个当前的选项连接

现在我开始运行: netstat -npt | awk '{print $5}' | grep -v "ffff\|127\.0\.0\.1" | awk -F ':' '{print $1}' | sort -n | uniq -c | sort -n netstat -npt | awk '{print $5}' | grep -v "ffff\|127\.0\.0\.1" | awk -F ':' '{print $1}' | sort -n | uniq -c | sort -n

这表明从我的networking服务器到我的数据库服务器IP有超过7000个活动连接。 这似乎有点极端。 我不使用PHP中的持久连接来连接到Mysql。

任何想法为什么有这么多的开放连接?

虽然这有点stackoverflow'y,这里是:

可能是因为你没有closures代码中的连接。 如果是这样,我build议你切换到mysql_pconnect() ,或者只是将mysql_close()添加到所有请求的php页面

如果到mysql服务器的所有连接都处于状态: TIME_WAIT ,请尝试降低mysqldconfiguration中的wait_timeoutvariables。 查看MySQL文档获取更多信息

更新 :正如ChristopherEvans指出的,你可以直接连接到mysql套接字而不是使用IP端点,以避免用尽本地接口上未使用的端口

查看连接池 – 这样每个连接都不需要自己的进程。

http://php.net/manual/en/mysqlnd-ms.pooling.php

不知道这是否会工作,因为你没有使用持续连接