我有一个laravel5.4web应用程序运行在一个共享主机(a2hosting)上,偶尔我会得到一个 SQLSTATE[08004][1040] Too many connections
错误。有时需要几分钟才能重新开始工作,有时需要几个小时。
我试过几种方法来诊断这个问题,并试图解决它,但到目前为止没有任何效果。 max_connections
设置为500和 wait_timeout
设置为8小时。
如果我在错误仍然弹出时登录mysql cli并列出活动进程,它显示的进程不超过10~15个。
另外,这个系统只有大约30个人在使用,所以我不知道为什么可以达到最大连接数(也许php因为某种原因没有关闭一些连接?)。
有人遇到过这样的错误吗?如果是的话,你做了什么来修复它?还有什么可能导致错误以及如何防止/修复错误的想法?
如果有助于诊断问题,我可以提供有关我的laravel应用程序、db和服务器的更多信息。
1条答案
按热度按时间kuhbmx9i1#
可能原因:
“连接池”已打开(在某处),并且设置得太高。
web服务器的“子项”太多;降低它的极限。
可能存在需要优化的“慢”查询。
连接完成后无法“断开”。
减少,而不是增加,
wait_timeout
.有多个
wait_timeout
设置;你换错了。增加同时连接的数量会使整体性能变差。