尽管httpd上没有用户,但我的数据库似乎有许多打开的连接。
mysql> SHOW PROCESSLIST;
+-------+----------+--------------------+---------------------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+----------+--------------------+---------------------+---------+------+-------+------------------+
| 22865 | rdsadmin | localhost:51066 | mysql | Sleep | 8 | | NULL |
| 25098 | ubuntu | 123.45.67.89:48060 | database_name_here! | Sleep | 350 | | NULL |
| 25099 | ubuntu | 123.45.67.89:48069 | database_name_here! | Sleep | 3731 | | NULL |
| 25126 | ubuntu | 123.45.67.89:49558 | database_name_here! | Sleep | 349 | | NULL |
| 25161 | ubuntu | 123.45.67.89:50770 | database_name_here! | Sleep | 289 | | NULL |
| 26583 | ubuntu | 123.45.67.89:37593 | database_name_here! | Sleep | 4550 | | NULL |
| 29729 | ubuntu | 123.45.67.89:49280 | database_name_here! | Sleep | 953 | | NULL |
| 29737 | ubuntu | 123.45.67.89:49489 | database_name_here! | Sleep | 953 | | NULL |
| 29738 | ubuntu | 123.45.67.89:49490 | database_name_here! | Sleep | 349 | | NULL |
| 29755 | ubuntu | 123.45.67.89:50674 | database_name_here! | Sleep | 2751 | | NULL |
| 29759 | ubuntu | 123.45.67.89:50892 | database_name_here! | Sleep | 600 | | NULL |
| 35600 | ubuntu | 123.45.67.89:49677 | NULL | Query | 0 | NULL | SHOW PROCESSLIST |
+-------+----------+--------------------+---------------------+---------+------+-------+------------------+我不明白怎么会有这么多联系。我使用的是带有RDS的amazon,带有PDO的apache/mysql/ EC2。我有持久的连接"on",但我认为这只是缓存连接。似乎有10个连接始终保持开放,即使在任何时候我的网站上有1-2个用户。
造成这种情况的原因是什么,我该如何解决?这是正常的行为吗,是否有一个最小数量的连接,MySQL保持开放以处理不同的用户?我似乎找不到任何关于如何分析正在发生的事情的信息。
发布于 2013-10-16 22:00:22
您需要了解如何在PHP web应用程序中配置连接池。即使是一个功能齐全的连接池,即使没有使用,到数据库的许多连接也经常保持打开状态。对于web应用程序来说,打开到数据库的连接可能非常昂贵,让一些未使用的连接坐在一起是有意义的。
大多数连接池都有如下设置:
也有可能你的web应用程序没有正确地释放连接回连接池。当连接完成后,您需要关闭它们,让池知道它们是可用的。不这样做是一种资源泄漏,最终会耗尽连接。
发布于 2013-10-17 11:08:36
您可以看到该命令=“睡眠”--这些指示服务器的连接线程处于空闲状态,并且正在等待客户端向其发送新语句。
你不用担心。确保max_connections值超过默认值,并且应用程序在其内部操作后关闭连接。
https://dba.stackexchange.com/questions/51615
复制相似问题