[英]Too many connections error with Laravel 5.4 and Mariadb
我最近将我的laravel应用程序从5.1升级到5.4。 我的服务器现在是PHP 7和Maria db 10.1.22。 现在我得到一个非常奇怪的错误。 有时候,我会尝试刷新浏览器,PHPMyAdmin会显示#1040 - Too many connections
。 其他时候我会点击我的应用程序上的新链接,然后会得到同样的错误。 我在互联网上做了一些研究并执行了以下命令:
show variables like 'max_connections`
上面的命令给出了100.然后我增加到500。
但现在我仍然得到错误。 这对我来说很奇怪,因为我在另一台服务器上安装了oracle mysql 5.6并且max_connections是151,并且超过一年半我没有遇到过这个错误。
当我运行命令show processlist
,我得到下面的结果,并且这种情况不断增加。 这是正常的吗?
可能是Mariadb的问题,我该如何解决它。
我不确定你们是否找到了解决方案,但我也遇到了同样的问题并找到了解决方案。 当我们将laravel应用程序从5.2 - 5.4升级时,我们错过了一些重要的东西。 php artisan队列:工作也已升级。
在laravel 5.2中,当我们执行queue:work时。 它只是一次处理一个作业,但是在laravel 5.4队列中:work为队列创建连接并保持连接。 因此,如果您有队列:在您的cron中工作以便每分钟运行一次,它将每分钟创建一个新连接,这就是我们得到太多连接错误的原因。
我没有在laravel 5.4文档中找到这些信息。 我正在通过php artisan来查看queue:work的描述并发现描述已更改。
这是laravel 5.2中的描述:
queue:work >>>>处理队列中的下一个作业
这是laravel 5.4中的描述
queue:work >>>>开始将队列上的作业作为守护进程处理
正如您所看到的那样,它们的意义不同。
我希望这可以帮助你。
谢谢。
也许这是一个愚蠢的观察,但你是否使用DB::disconnect('foo')
来关闭数据库的连接?
无论如何,数据库会自动关闭,因此问题可能出在其他地方,您是否尝试过监控?
监控MySQL的一个非常强大的工具是innotop
。 你可以在这里找到它:
https://github.com/innotop/innotop
检查一下
你在用什么网络服务器 。 如果是Apache,那么MaxRequestWorkers (以前称为MaxClients
)的设置是什么呢? 一般来说,它应该不超过20。
如果设置为超过max_connections
,那将解释您所看到的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.