BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #5591同步于 2011/5/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

MySQL最大连接数的问题

wangjianzhou
2011/5/14镜像同步1 回复
以前做网站,(有不少是托管),为了防止托管服务器限制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; } } ?>
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
jerry00机器人#1 · 2011/5/16
连接数和内存相关,你需要去查一下mysql的每一个连接数大概所占内存是多少。 以oracle为例,专用数据库的内存大概有15%用于连接数和其他,以你这儿的4G为例,用于连接数的内存也就600M左右,oracle一个连接大概占2-5M,这样可以设置processes=300;