【问题标题】:I am receiving this error? Error : (1226) User 'qe' has exceeded the 'max_user_connections' resource (current value: 30)我收到此错误?错误:(1226)用户“qe”已超出“max_user_connections”资源(当前值:30)
【发布时间】:2017-05-21 15:09:21
【问题描述】:

因此,在对此进行了很多研究之后,我正在为遇到此问题并找到出路的人寻求帮助。

我们为客户开发了一个 PTC 脚本,它运行良好,但随着用户的增长,它开始显示如下错误:

错误:(1226) 用户“qe”已超出“max_user_connections”资源(当前值:30)

现在在寻求帮助后,有人说这是与服务器有关的问题,而其他人则指出这是与脚本的数据库设计有关的问题。

期待找到解决此问题的方法。尝试了很多东西。

目前使用 Godaddy 托管,他们将限制从 30 增加到 50,但我确定问题会再次出现。

【问题讨论】:

  • 您需要提供有关该软件的一些额外详细信息以及该错误是如何产生的。您还应该描述您尝试过的内容,您正在使用什么数据库(MySQL?PostgreSQL?Oracle?MSSQL?)这听起来确实像一个数据库问题。
  • 我们使用的是Mysqli,PHP编写的脚本。当网站上的用户数超过时,就会出现错误。用户来到网站点击广告。
  • 可能是您的脚本没有正确关闭连接。您在网站上通常有多少个并发连接?
  • 你的php代码在哪里?我在问题中看不到它。
  • 您尝试过的“大量事物”在哪里?也看不到他们的踪迹。

标签: php mysql database mysqli server


【解决方案1】:

数据库没有问题,问题在于您如何处理来自软件的数据库连接。

您的脚本设置方式是,与您的 Web 服务器的每个连接也会打开与 MySQL 的连接。这不是你想要的场景。

提高限制不会解决问题,只会延迟另一个错误。您应该做的是使用持久连接。

首选使用php-fpm 而不是mod_php 等服务器API 的原因之一是因为启动了一定数量的PHP 进程并创建了一个服务连接池。

流程如下:

  • 使用php-fpmApachenginx 可以使用 FCGI 接口与 php-fpm 进程对话
  • php-fpm 提高相对较少的子进程数量。这不应该太大,默认配置通常可以解决,我猜你没有运行六核系统,所以 4-6 个子进程应该没问题
  • 使用持久 MySQL 连接

这是做什么的?您的服务器接受请求并将其发送到php-fpm,当它空闲时处理它。每个进程使用 1 个与 MySQL 的连接。这意味着您永远不会像您那样达到某种硬性限制。

如果您的服务器很忙,服务器应该将请求排队,直到 PHP 能够处理它们。无论您使用的是Apache 还是nginx,这种方法都可以很好地工作。

如果您的站点很忙,很可能 Web 服务器的工作速度更快,可以接受连接并提供静态内容,而 PHP 将处理动态内容。在这种情况下,您可以选择添加另一台(或更多台)运行php-fpm 的物理机。指示您的 Web 服务器在为 PHP 提供服务的机器之间进行循环是微不足道的,对于提到的两个 Web 服务器来说。

底线是您希望以最佳方式利用您的资源。在每个请求上打开和关闭 MySQL 连接并不是最佳的。池连接是。

【讨论】:

  • 评论假设 db server 对 max_connections 有合理的设置,并且还假设关于代码的事情没有发布任何代码。海报试图将完全独立的技术强加给明显的新手用户。
  • @N.B.你的回答开辟了一个我什至没有想到的新维度。 (S.Imp) 以前我一直在使用不同的技术更改和优化我的数据库表,这显然没有解决我的问题。 (NB)强调的问题完全有道理,因为我没有处理任何与打开和关闭从用户到数据库的连接相关的事情。感谢您的帮助。
  • @N.B. OP 的男高音表明他们在基本概念上挣扎。鼓励他们更改基本的 php/web 服务器安装似乎完全不合理——而且您的建议没有提供有关他们如何“使用 php-fpm”的详细信息。您不提供任何链接或文档或说明或任何东西。如果你要学究气,至少要彻底。
  • 假设,为了论证,用户有非 fpm PHP web 服务器,但连接到一个完全独立且非常强大的 MySQL 实例,具有大量 RAM。尽管服务器有所有 RAM,但尚未使用合适的 max_connections 值配置该服务器。增加这个值不是比重新安装/重新编译/重新配置 Apache 或 PHP 更容易吗?或者在某些 PHP 应用程序中,关闭持久连接可以解决这个问题。您的解决方案实际上可能有效,但对他们的代码和设置做了很多假设,这不是很周到。另外,我投了反对票,因为我追求评论家徽章
猜你喜欢
  • 1970-01-01
  • 2021-05-31
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多