2012-02-11 13 views
1

我有一个网站在过去的2年中一直很好,但现在网站有更多的访问者和更多的内容。我使用wordpress,并且由于内容和访问者的原因,我在一个特定时刻与数据库建立了多个连接。如何解决这个问题?如何控制到MySQL的多个连接?

由于本网站有97个连接到MySQL数据库,bluehost上的帐户被暂停。

可能解决这个问题可能是:

为访问者一条消息说:该网站是不是在这个时候提供。

如何知道何时超过最大连接数?

+2

请注意在这种情况下的单词实例,一个实例是指一个MySQL服务器,我认为你的意思是97连接? – 2012-02-11 21:47:01

+0

有97连接.. – user975718 2012-02-11 21:51:13

回答

1

找到Wordpress的缓存插件并安装它。缓存将降低数据库的负载。

1

有一个简单的解决方案称为缓存。

您可以在您的wordpress安装中安装缓存插件,这将减少所需的数据库连接数。

有关列表和缓存插件为WordPress的比较,请参见以下链接:List of cache plugins

2

有几个选项在这里:

  1. 您可以通过seanbreeden的建议实行一个缓存层,我我确定有很多可用的。很多博客页面都是静态的,因此缓存整个页面的缓存插件肯定会有所帮助。看看varnish

  2. 如果缓存仍然没有帮助,那么您可能需要考虑将您的应用程序移动到一个主机,这个主机在任何给定的时间都会更关注连接的总数,甚至可能是虚拟专用服务器,便宜,退房Linode.com

  3. 你可以实现一个database singleton这将有助于回收数据库连接,这个解决方案有一点涉及,但也有助于减少连接数量。

- 编辑 -

貌似可以获取当前“活动”的连接发出这样的询问:

mysql> SHOW GLOBAL STATUS LIKE 'Threads_connected'; 
+-------------------+-------+ 
| Variable_name  | Value | 
+-------------------+-------+ 
| Threads_connected | 1  | 
+-------------------+-------+ 
1 row in set (0.00 sec)  

我不记得确切的代码,但我们当PDOException被引发并且代码匹配“太多连接”时,我们会执行一个“重试”机制,我们将睡眠查询,然后重试$ x次。