我有很多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之间切换,但是没有效果。
知道瓶颈在哪里?以及如何避免这种情况?
答案 0 :(得分:0)
默认的最大连接数设置为150.如果您有100个客户端和50到100个执行数据库查询的cronjobs,我会达到100 * 100 =至少10,000个连接。 如果您同时有10,000个连接,则可能会出现奇怪的错误,例如超时或并发问题(一个脚本锁定一个表而另一个脚本尝试访问,但这不应该导致无法连接错误,但在某些情况下它会)。您可以尝试捆绑查询。
如果将最大连接数提高到400左右会发生什么?它会减少数量或错误吗?
解决方法可能是当作业失败时,您等待一秒或什么然后再试一次。更稳定的是使用像Gearman这样的排队机制。这有助于分散负载。
修改强> Codeigniter为您关闭连接,但您也可以使用
手动完成连接 $this->db->close();