【问题标题】:Too many connections error with Laravel 5.4 and MariadbLaravel 5.4 和 Mariadb 的连接错误太多
【发布时间】:2017-10-30 02:09:51
【问题描述】:

我最近将我的 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 日志文件中吗?你能检查堆栈跟踪吗?

标签: php mysql laravel mariadb


【解决方案1】:

我不确定你们是否找到了解决方案,但我也遇到了同样的问题并找到了解决方案。当我们将 laravel 应用程序从 5.2 升级到 5.4 时,我们错过了一些重要的事情。 php artisan queue:work 也升级了。

在 laravel 5.2 中,当我们执行 queue:work.它一次只处理一项工作,但在 laravel 5.4 queue:work 为您的队列创建一个连接并保持连接。因此,如果您的 cron 中有 queue:work 以每分钟运行一次,它将每分钟创建一个新连接,这就是我们收到连接过多错误的原因。

我没有在 laravel 5.4 文档中找到此信息。我正在通过php artisan查看queue:work的描述,发现描述被改变了。

这是 laravel 5.2 中的描述:

queue:work >>>> 处理队列中的下一个作业

这是 laravel 5.4 中的描述

queue:work >>>> 开始作为守护进程处理队列中的作业

如您所见,它们的用途有所不同。

希望对你有所帮助。

谢谢。

【讨论】:

  • 您好,感谢您的回答。几个月前我找到了答案。刚刚忘记发布答案了。
  • 您好,有什么解决办法?不执行队列:每分钟在 cron 中工作,但只启动一次守护进程?谢谢
  • 如何在 laravel 7 中为队列设置 cron 作业。请帮忙,我也遇到了这个错误。
【解决方案2】:

您使用的是什么网络服务器。如果是 Apache,那么MaxRequestWorkers(以前称为MaxClients)的设置是什么?一般不超过20左右。

如果设置为大于max_connections,这将解释您所看到的。

【讨论】:

  • 嗨 @Rick James 我正在使用 Apache。我在 httpd.conf 文件中找不到 MaxClient。请问它在哪里
  • 嗨@Rick James。我检查过。 MaxRequestWorkers: 150max_connections: 151
  • 这比我想要的要紧。我很惊讶 500 并没有解决问题。也许我看错了方向。是否只有一台 Apache 服务器?有什么东西在做“连接池”吗?
  • 只有一台 Apache 服务器。我有一个每分钟运行一次的 cron 条目来执行我的计划命令。当我执行show processlist 时,我看到我的数据库被多次列出,并且“命令”列的值重复睡眠。
  • 150 来自 Apache + 1 来自 cron + 1 来自你观看 > 151。
【解决方案3】:

也许这是一个愚蠢的观察,但是您是否使用DB::disconnect('foo') 关闭了您的数据库的连接?

反正db会自动关闭,所以问题可能出在其他地方,你试过监控吗?

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

https://github.com/innotop/innotop

查看this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-01
    • 2023-01-11
    • 2013-05-07
    • 2017-10-03
    • 2014-04-01
    • 2010-11-15
    • 2017-10-29
    • 1970-01-01
    相关资源
    最近更新 更多