Mariadb 错误!:SQLSTATE[42000][1226]‘;最大用户连接数’;资源(当前值:30),但最大用户连接数配置为1000

Mariadb 错误!:SQLSTATE[42000][1226]‘;最大用户连接数’;资源(当前值:30),但最大用户连接数配置为1000,mariadb,resource-governor,Mariadb,Resource Governor,当Mysql用户超过最大用户连接数,返回当前值为30,但最大用户连接数和最大用户连接数设置为1000时,访问者会收到Mysql错误。当问题发生时,CPU几乎达到98% 在mysql错误日志中,我们收到了来自另一个用户的大量拒绝访问错误,大约5000个拒绝连接。我的问题不在于PHP脚本为什么需要所有这些连接,而是要知道为什么不应用配置的变量、max_user_连接和max_连接。这些配置为1000,但错误消息返回30。这怎么可能 我激活了log_warnings=2以获取更多信息,但我们没有获得额

当Mysql用户超过最大用户连接数,返回当前值为30,但最大用户连接数和最大用户连接数设置为1000时,访问者会收到Mysql错误。当问题发生时,CPU几乎达到98%

在mysql错误日志中,我们收到了来自另一个用户的大量拒绝访问错误,大约5000个拒绝连接。我的问题不在于PHP脚本为什么需要所有这些连接,而是要知道为什么不应用配置的变量、max_user_连接和max_连接。这些配置为1000,但错误消息返回30。这怎么可能

我激活了log_warnings=2以获取更多信息,但我们没有获得额外信息。知道为什么会有这种行为吗?或者如何审计mysql以找到问题的根源

收到的错误消息是:

错误!:SQLSTATE[42000][1226]用户“某些用户”已超过“最大用户连接数”资源(当前值:30)

错误似乎是: 错误:1226 SQLSTATE:42000(已达到ER\U用户\U限制)

消息:用户“%s”已超过“%s”资源(当前值:%ld)

而不是:

错误:1203 SQLSTATE:42000(ER\u太多用户\u连接)

消息:用户%s已具有超过“最大用户连接数”的活动连接

我们正在使用MariaDB,版本:

  select version(); 
  +------------------------+
  | version()              |
  +------------------------+
  | 5.5.44-MariaDB-cll-lve |
  +------------------------+
解决方案:

您可以使用以下命令再现错误:

mysqlslap -a --concurrency=500 --number-of-queries 5000 --iterations=500 --engine=innodb --debug-info -utest -p
这个问题是由调控器引起的,我们在服务器上安装了Cloudlinux,但是这个选项在默认情况下被设置为禁用,但是在这个服务器上被设置为滥用者。如果CPU高于400 GB,或将用户的最大用户连接数设置为30

您可以检查/var/log/dbgovernor-restrict.log上的日志

解决方案是正确设置该值或抵消

dbctl --lve-mode off
/etc/container/mysql-governor.xml

<lve use="abuser"></lve>
<restrict level1="60s" level2="15m" level3="1h" level4="1d"     
timeout="1h" log="/var/log/dbgovernor-restrict.log"          

user_max_connections="30"></restrict>

<statistic mode="on"></statistic>
<default>
<limit name="cpu" current="400" short="380" mid="350" long="300">      
</limit>


首先,我会检查每个脚本是否只连接一次,而不是多次。如果错误消息确定正在运行的脚本,请向我们显示该脚本以及您使用的MYSQL版本?版本是:5.5.44-MariaDB-cll-LVE问题是我们知道导致问题的脚本,我们为客户管理服务器。可能有助于防止DOS攻击和其他黑客攻击。当然,不是DDOS攻击,但如果您与许多客户共享主机,您可以限制每个用户的mysql资源。
<lve use="abuser"></lve>
<restrict level1="60s" level2="15m" level3="1h" level4="1d"     
timeout="1h" log="/var/log/dbgovernor-restrict.log"          

user_max_connections="30"></restrict>

<statistic mode="on"></statistic>
<default>
<limit name="cpu" current="400" short="380" mid="350" long="300">      
</limit>