我运行 2 台服务器,1 个 Web 服务器(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
这表明从我的 Web 服务器到我的数据库服务器 IP 有超过 7000 个活动连接。这似乎有点极端。我不使用 PHP 中的持久连接来连接 Mysql。
知道为什么有这么多开放的连接吗?
答案1
尽管这有点像 stackoverflow'y,但如下所示:
可能是因为你没有在代码中关闭连接。如果是这样,我建议你切换到mysql_pconnect()
,或者直接添加mysql_close()
到所有请求的 php 页面的末尾
如果所有与 mysql 服务器的连接都处于以下状态:TIME_WAIT
,请尝试降低wait_timeout
mysqld 配置中的变量。查看MySQL 文档了解更多信息
更新:正如 ChristopherEvans 指出的那样,您可以直接连接到 mysql 套接字,而不是使用 IP 端点,以避免耗尽本地接口上未使用的端口