我有一个网站在过去的2年中一直很好,但现在网站有更多的访问者和更多的内容。我使用wordpress,并且由于内容和访问者的原因,我在一个特定时刻与数据库建立了多个连接。如何解决这个问题?如何控制到MySQL的多个连接?
由于本网站有97个连接到MySQL数据库,bluehost上的帐户被暂停。
可能解决这个问题可能是:
为访问者一条消息说:该网站是不是在这个时候提供。
如何知道何时超过最大连接数?
我有一个网站在过去的2年中一直很好,但现在网站有更多的访问者和更多的内容。我使用wordpress,并且由于内容和访问者的原因,我在一个特定时刻与数据库建立了多个连接。如何解决这个问题?如何控制到MySQL的多个连接?
由于本网站有97个连接到MySQL数据库,bluehost上的帐户被暂停。
可能解决这个问题可能是:
为访问者一条消息说:该网站是不是在这个时候提供。
如何知道何时超过最大连接数?
找到Wordpress的缓存插件并安装它。缓存将降低数据库的负载。
有一个简单的解决方案称为缓存。
您可以在您的wordpress安装中安装缓存插件,这将减少所需的数据库连接数。
有关列表和缓存插件为WordPress的比较,请参见以下链接:List of cache plugins
有几个选项在这里:
您可以通过seanbreeden的建议实行一个缓存层,我我确定有很多可用的。很多博客页面都是静态的,因此缓存整个页面的缓存插件肯定会有所帮助。看看varnish。
如果缓存仍然没有帮助,那么您可能需要考虑将您的应用程序移动到一个主机,这个主机在任何给定的时间都会更关注连接的总数,甚至可能是虚拟专用服务器,便宜,退房Linode.com
你可以实现一个database singleton这将有助于回收数据库连接,这个解决方案有一点涉及,但也有助于减少连接数量。
- 编辑 -
貌似可以获取当前“活动”的连接发出这样的询问:
mysql> SHOW GLOBAL STATUS LIKE 'Threads_connected';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_connected | 1 |
+-------------------+-------+
1 row in set (0.00 sec)
我不记得确切的代码,但我们当PDOException被引发并且代码匹配“太多连接”时,我们会执行一个“重试”机制,我们将睡眠查询,然后重试$ x次。
请注意在这种情况下的单词实例,一个实例是指一个MySQL服务器,我认为你的意思是97连接? – 2012-02-11 21:47:01
有97连接.. – user975718 2012-02-11 21:51:13