繁体   English   中英

与Laravel 5.4和Mariadb的连接错误太多

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM