返回信息流以前做网站,(有不少是托管),为了防止托管服务器限制MYSQL连接数,而且数据库的打开会比较慢,都是将数据连接类写成单例模式,这样的话当并发数高,数据库访问就会慢。
现在做一个访问量会大点的网站,所以想程序控制MYSQL的连接数,既能保证数据访问效率,又保证极端情况下连接数过多数据库崩溃,(要是托管的话,也能保证连接限制数)。现在想问一下在常见的普通服务器情况下(双核2Ghz,4G内存),MYSQL的连接数最大值一般为多少能满足这个条件。
给出代码,需要的同学可以参考下。这里最大连接100个
<?php
class ConnecToDB
{
private static $instance=array();
//防止外部创建新的数据库连接类
private function _constuct(){}
static public function Connect()
{
//连接类不够100,创建新类
if(count(self::$instance)<100)
{
$newDb=new self();
self::$instance[]=$newDb;
return $newDb::ConDB();
}
else
{
//随机数保证数据库连接均衡
$i=rand(0,99);
$new_obj=self::$instance[$i];
return $new_obj::ConDB();
}
}
static private function ConDB()
{
try
{
$connec=mysql_connect("127.0.0.1","数据库账户","数据库密码");
mysql_select_db("数据库名");//选择数据库
}
catch(Exception $e)
{
$errors[]=$e->getMessage();
foreach($errors as $error)
{
echo"<div class='errorclass'>$error</div>";
}
}
return $connec;
}
}
?>
这是一条镜像帖。来源:北邮人论坛 / database / #5591同步于 2011/5/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
MySQL最大连接数的问题
wangjianzhou
2011/5/14镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
连接数和内存相关,你需要去查一下mysql的每一个连接数大概所占内存是多少。
以oracle为例,专用数据库的内存大概有15%用于连接数和其他,以你这儿的4G为例,用于连接数的内存也就600M左右,oracle一个连接大概占2-5M,这样可以设置processes=300;