[英]Too many connections Error due to many sleep connections
PHP mysql_connect有时由于“连接过多”而失败。 当检查进程状态列表时,我注意到发生这种情况时,有很长的进程处于睡眠状态。 多久? 时间:28490
这就是我初始化连接的方式:
$this->connection[$server] = mysql_connect( $credentials['dbUrl'], $credentials['dbUser'], $credentials['dbPass'], true);
这并非一直发生,只是有时连接被“卡住”。 我认为这可能与页面上的某些内容未完成有关(图像未加载?外部服务卡住了?)。 脚本何时正式完成? 页面完全加载之后吗?
我想到了两种可能的解决方案:1.使用mysql_close。 2.更改最大mysql超时( /etc/my.cnf
.处理脚本超时。
什么原因会导致连接陷入“睡眠”状态? 您如何建议解决/进一步调查问题?
一个好的解决方案是将连接放入函数中,然后添加析构函数为您关闭连接。 这样,连接将在上次调用mysql连接后自动关闭。
class DbConn {
public $connection;
public function __construct($host, $name, $user, &$pass) {
$this->connection = mysql_connect(mysql_connect($host, $user, $pass);
if(mysql_connect_errno) {
echo mysql_connect_error;
} else {
mysql_select_db($name, $this->connection);
}
unset($pass); //Clear password for security.
}
public function __destruct() {
mysql_close($this->connection);
}
}
那应该照顾大多数打开的连接,因为它们会在脚本结束之前关闭,即使脚本挂在图像上,连接也会在运行最后一个查询后关闭。 您可能仍然会得到一些,但不足以导致too many connections
错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.