Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我得到最大用户连接SQL错误?_Php_Mysql_Wordpress_Phpbb3_Question2answer - Fatal编程技术网

Php 为什么我得到最大用户连接SQL错误?

Php 为什么我得到最大用户连接SQL错误?,php,mysql,wordpress,phpbb3,question2answer,Php,Mysql,Wordpress,Phpbb3,Question2answer,为什么我在我的网站上一次又一次地出现这个错误 Error establishing a database connection SQL ERROR [ mysqli ] User elancema_user already has more than 'max_user_connections' active connections [1203] Warning: mysqli::mysqli(): (HY000/1203): User elancema_user already has m

为什么我在我的网站上一次又一次地出现这个错误

Error establishing a database connection

SQL ERROR [ mysqli ]
User elancema_user already has more than 'max_user_connections' active connections [1203]

Warning: mysqli::mysqli(): (HY000/1203): User elancema_user already has more than 'max_user_connections' active connections in /home/elancemarket/public_html/ask/qa-include/qa-db.php on line 66

我使用非常昂贵的VPS

服务器向您抛出以下错误:

SQL ERROR [ mysqli ] User database_user already has more than 'max_user_connections' active connections [1203]
这意味着特定的数据库用户此时已经用完了所有并发连接,无法处理更多的连接

在不做任何编程更改的情况下修复的唯一选项是更改MySQL配置中的
max\u user\u connections
值。Linux上的配置文件通常是
/etc/my.cnf

其他解决办法可能是:

  • 减少网站本身的查询
  • 如果不同项目使用相同的数据库用户,则为其创建单独的数据库用户

通过运行命令
SHOW变量,如“max_user_connections”,可以检查用户的当前值

您最好的选择是增加
最大用户连接数
。对于服务于三种不同web应用程序(原始php、WordPress、phpBB)的MySQL实例,您可能希望其值至少为60

发出此命令,您将了解有多少全局连接可用:

show global variables like '%connections%'
您可以了解在任何给定时刻有多少连接正在使用,如下所示:

show status like '%connected%'
show full processlist
您可以通过以下方式了解每个连接的作用:

show status like '%connected%'
show full processlist
如果我是你,我会尝试至少100个连接的全局值。如果您没有权限这样做,您的服务提供商应该能够帮助您。这需要在MySQL的
my.cnf
文件配置中完成。不要设置得太高,否则MySQL服务器进程可能会占用所有RAM

第二种方法允许您将这些总体连接分配给不同的MySQL用户。如果您的每个web应用程序都有不同的MySQL用户名,那么这种方法适用于您。这个方法写在这里

控制这一问题的最终方法更为微妙。您可能正在使用ApacheWeb服务器作为底层技术。您可以减少同时运行的Apache任务的数量,以提高吞吐量。这是因为Apache将请求排队。如果它有几个任务有效地通过队列,那么通常比很多任务更快,因为争用更少。它还需要更少的MySQL连接,这将解决您眼前的问题。这里解释如下:


顺便说一下,像WordPress这样的web应用程序使用一个持久连接池。也就是说,它们建立到MySQL数据库的连接,保持其打开状态并重用它们。如果你的应用程序很忙,每个连接的生命周期应该是几分钟。(根据过于简单的声明,数据库连接在几秒钟内创建和删除,您的主机提供商的支持技术人员不理解web应用程序操作的这一部分的微妙之处。)

MySQL配置中的最大用户连接数是多少?它显然太低了。@Andrius我的服务器提供商告诉我它被设置为20,这是正常的,因为数据库连接在几秒钟内就被创建和删除了!好吧,把它调高一点。如果这是一个非常复杂的网站,你可能会在每个负载上建立20个以上的连接。@Andrius好的,让我请求我的服务器提供商增加限制。我想,我正在使用多个cms,这就是为什么我太频繁地达到最大连接限制。这个老问题的状态如何?