gpt4 book ai didi

mysql - max_user_connections错误含义和修复

转载 作者:行者123 更新时间:2023-11-29 11:36:52 24 4
gpt4 key购买 nike

我从 mysql 收到此错误:“无法连接到数据库 [用户 xyzxyz 已拥有超过 'max_user_connections' 的事件连接”

我当前的 max_user_connections=50,并且我在 VPS 上运行

作为第一步(我在某处读到它应该有帮助),我创建了一个新的 mysql 用户,它将处理所有后台操作,这是我网站上的大部分操作。现在我有 2 个用户:

  • xyzxyz_backgrounds-处理后台操作
  • xyzxyz_users - 仅处理实际站点用户生成的 mysql 调用。

在此更改之后,用户仍报告“xyzxyz_users 已拥有超过 'max_user_connections' 的事件连接”

这是我运行的一个繁忙的网站,但我想知道我的代码中是否有导致此问题的错误。

我尝试运行“SHOW PROCESSLIST”和“SHOW FULL PROCESSLIST”,但我只看到返回的 2 行(显示进程列表的一个 SLEEP 和一个 QUERY)。

据我所知,我没有任何类型的持久 mysql 连接

下面是我在每个 php 文件开头启动 mysql 连接的代码(使用“require”)

if (!(isset($use_pdo))) {
$conn_mls = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);
mysql_query("SET NAMES utf8");

}else{
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$dsn = "mysql:host=127.0.0.1;dbname=$dbname;charset=utf8";
$conn = new PDO($dsn, $dbuser , $dbpass , $options);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

};

在某些情况下我使用mysqli,我不认为我在那里使用持久连接,如果需要我可以发布代码。

mysql什么时候创建新连接?如果我有 max_user_connections=50 是否意味着只有 50 个用户可以同时连接到该网站?是否需要在代码中手动关闭连接,还是mysql自己处理?

最佳答案

我建议在任何地方实现持久的 PDO 连接(如果您能够预算时间),并在需要时增加最大连接数。这也将提高应用程序的一致性和可读性。

正如我在评论中提供的链接所解释的,PDO 缓存持久连接:

"Many web applications will benefit from making persistent connections to database servers. Persistent connections are not closed at the end of the script but are cached and re-used when another script requests a connection using the same credentials. The persistent connection cache allows you to avoid the overhead of establishing a new connection every time a script needs to talk to a database, resulting in a faster web application."

我不确定这是否会解决您的连接问题,但它会提高性能,并且可能对您的连接问题产生积极影响,具体取决于多个用户是否具有相同的凭据。当然,如果您能够增加最大连接数以支持所有并发用户,那么您可以在不实现 PDO 持久连接的情况下实现此目的。

关于mysql - max_user_connections错误含义和修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36433108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com