Mariadb 错误!:SQLSTATE[42000][1226]‘;最大用户连接数’;资源(当前值:30),但最大用户连接数配置为1000
当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,版本: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以获取更多信息,但我们没有获得额
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>