2017-05-29 37 views
3

我最近将我的laravel应用程序从5.1升级到了5.4。我的服务器现在在PHP 7和Maria db 10.1.22上。现在我得到一个非常奇怪的错误。有时,我只会尝试刷新我的浏览器,PHPMyAdmin会显示#1040 - Too many connections。其他时候,我会点击我的应用程序上的新链接,然后会得到这个相同的错误。我做了互联网上一些研究,并执行以下命令:与Laravel 5.4和Mariadb连接错误太多

show variables like 'max_connections` 

上面的命令给了100,然后我增加至500

但现在我仍然得到错误。这对我来说很奇怪,因为我在另一台服务器上安装了oracle mysql 5.6,并且max_connections是151,并且一年半以上我没有遇到这个错误。

当我运行命令show processlist时,我得到下面的结果,并且这个不断增加。这是正常的吗?

enter image description here

还有什么能与MariaDB的问题以及如何解决它。

+0

奇怪!这是否记录在laravel日志文件中?你能检查堆栈跟踪吗? –

回答

2

我不确定你们是否找到解决方案,但我也面临同样的问题,并找到解决方案。当我们将我们的laravel应用程序从5.2升级到5.4时,我们错过了一些重要的东西。 PHP工匠队列:工作也已升级。

laravel 5.2,当我们执行队列:工作。它只是一次处理一项工作,但在laravel 5.4队列中:工作为您的队列创建连接并保持连接。所以如果你有队列:在你的cron中工作每分钟运行一次,它会每分钟创建一个新的连接,这就是为什么我们会得到太多连接的错误。

我没有在laravel 5.4文档中找到此信息。我正在通过php技术人员查看队列的描述:工作,发现描述已更改。

这是第laravel 5版中的描述。2:

队列:工作流程>>>>上的队列

这接下来的工作是在laravel描述5.4

队列:工作>>>>启动处理作业在队列上作为守护进程

正如你可以看到它们意味着什么的区别。

我希望这可以帮助你。

谢谢。

+0

嗨,谢谢你的回答。几个月前我找到了答案。只是忘了发布答案。 –

0

也许这是一个愚蠢的观察,但你使用DB::disconnect('foo')来关闭你的分贝的能力?

无论如何,数据库自动关闭,所以问题可能在别的地方,你有没有尝试监测?

监控MySQL的一个非常强大的工具是innotop。你可以在这里找到它:

https://github.com/innotop/innotop

检查this

0

什么Web服务器您使用。如果是Apache,那么MaxRequestWorkers(以前叫做MaxClients)的设置是什么呢?一般应该不超过20个。

如果设置为大于max_connections,那可以解释您所看到的内容。

+0

Hi @Rick James我正在使用Apache。我无法在httpd.conf文件中找到MaxClient。请在哪里找到 –

+0

Hi @Rick James。我检查过。 'MaxRequestWorkers:150'和'max_connections:151' –

+0

比我想要的要紧。我很惊讶,500人没有让问题消失。也许我正在看错方向。是否只有一个Apache服务器?有人在做“连接池”吗? –