【发布时间】:2016-04-05 17:24:47
【问题描述】:
我从 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 和 mysqli?此页面:php.net/manual/en/pdo.connections.php 可能会有所帮助。
-
假设我愿意。它有什么不同吗?与 pdo、msqli 和旧版 mysql 有不同的连接吗?如果我的所有页面都是 pdo,并且我有 100 人试图访问该站点,我还会收到此错误吗?
标签: mysql