你的位置:
phpArticle
>
原创软件
>
phpArticle
>
关于mysql中过多sleep进程的问题
在本地电脑上架设了Linux服务器用于测试网站,因为本地测试,访问量小,没有发现mysql服务器中存在大量的sleep进程。后将网站传到服务器上,正式启用网站后,由于访问量的增大,sleep进程的问题凸显出来,并导致mysql服务器死机。认真分析pa代码,起初以为数据库调用后未关闭的结果,即mysql_close() ,但经过查找资料发现mysql_connect()函数会在数据库调用结束会自动关闭,不必刻意去关闭数据库。后来分析代码
function connect(){
global $usepconnect;
if ($usepconnect==1){
if (!$this->link_id = @mysql_pconnect($this->servername,$this->dbusername,$this->dbpassword)){
$this->halt("数据库链接失败");
}
} else {
if (!$this->link_id = @mysql_connect($this->servername,$this->dbusername,$this->dbpassword)){
$this->halt("数据库链接失败");
}
}
return $this->link_id;
}
发现数据库默认使用硬连接mysql_pconnect,从而导致服务器sleep进程过多。不知道大家是否遇到这样的问题呢?
我的问题是:我用的pa,mysql_pconnect产生大量的sleep进程是正常现象么?大家是如何解决这个问题的呢?还有什么原因会导致mysql sleep进程的增多?谢谢!
我的解决办法
function connect(){
$usepconnect = 0;
if ($usepconnect==1){
if (!$this->link_id = @mysql_pconnect($this->servername,$this->dbusername,$this->dbpassword)){
$this->halt("数据库链接失败");
}
} else {
if (!$this->link_id = @mysql_connect($this->servername,$this->dbusername,$this->dbpassword)){
$this->halt("数据库链接失败");
}
}
return $this->link_id;
}
责任编辑:wujian2690