Codeigniter和太多的数据库连接? (无法连接...)

时间:2013-12-05 08:00:36

标签: php mysql codeigniter

我有很多cronjobs(50 -100),它们都是同时开始的。 (刷新每个客户端的数据。)一小时内可以完成许多不同的工作,因此我无法区分工作的时间。我决定不做一个循环 - 但是单个工作 - 以避免可能的错误影响其他人的刷新。

起初一切都还好 - 但现在 - 有大约100个客户 - 近30%的工作最终都是

A Database Error Occurred
Unable to connect to your database server using the provided settings.
Filename: core/Loader.php
Line Number: 346

但是最大。 mySQL的连接已达到 NOT 。我已经尝试在connect和pconnect之间切换,但是没有效果。

知道瓶颈在哪里?以及如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

默认的最大连接数设置为150.如果您有100个客户端和50到100个执行数据库查询的cronjobs,我会达到100 * 100 =至少10,000个连接。 如果您同时有10,000个连接,则可能会出现奇怪的错误,例如超时或并发问题(一个脚本锁定一个表而另一个脚本尝试访问,但这不应该导致无法连接错误,但在某些情况下它会)。您可以尝试捆绑查询。

如果将最大连接数提高到400左右会发生什么?它会减少数量或错误吗?

解决方法可能是当作业失败时,您等待一秒或什么然后再试一次。更稳定的是使用像Gearman这样的排队机制。这有助于分散负载。

修改 Codeigniter为您关闭连接,但您也可以使用

手动完成连接

$this->db->close();