经常看到网上有帖子too many connections 1040,想请教一些很基础的问题:
1. MySQL如何计算max_connections2. max_connections是不是指每秒钟内,多少个IP地址同时向MYSQL进行MYSQL QUERY呢?如果是这样的话,像JOOMLA,WORDPRESS,DUPRAL类似的CMS系统,所有的页面都不是通过PHP生成静态页面,那岂不是最大只能支持几百人同时在线?3. 传说max_connections设置不能太多,一般也就200,300,设置过多会引发其他错误,是不是这样呢?网上搜到案例,LINUX可以设置到1500个,那么WIN2003,2008可以设置多少呢?4. 同一个服务器安装多个MYSQL数据库,是不是max_connections数可以叠加?还是最大的max_connections数还需要依赖内存的大小?5. 某些网站,使用服务器集群,总机数也就10来台,但是可以承受10W以上的IP同时在线,他们是如何做到的?

解决方案 »

  1.   

    每接入一个新连接请求 max_connections++, 每中止一个连接 max_connections--
    不是
    不是太多,每个连接都需要内存。这个数字受你的内存限制。与操作系统无关。内存足够的话,你可以设置1-100000之间的数字。互相没有直接联系,与内存限制有关。网站上你的页面生成结束后,就会释放数据库连接。并不是你的用户阅读新闻的时候,它还连关数据库。其它在你看这篇帖子的时候,你的浏览器甚至已经与CSDN的WEB服务器已经断开了。
      

  2.   

    max_conecctions:整个MySQL 允许的最大连接数;
    这个参数主要影响的是整个MySQL 应用的并发处理能力,当系统中实际需要的连接量大于
    max_conecctions 的情况下,由于MySQL 的设置限制,那么应用中必然会产生连接请求的等待,
    从而限制了相应的并发量。所以一般来说,只要MySQL 主机性能允许,都是将该参数设置的尽
    可能大一点。
      

  3.   

    zz联机文档
    A.2.6. 连接数过多当你试图连接到mysqld服务器时遇到“过多连接”错误,这表示所有可用的连接均已被其他客户端使用。
    允许的连接数由max_connections系统变量控制。默认值为100。如果需要支持更多的连接,应使用该变量的较大值重启mysqld。
    mysqld实际上允许max_connections+1个客户端进行连接。额外的连接保留给具有SUPER权限的账户。通过为系统管理员而不是普通用户授予SUPER权限(普通用户不应具有该权限),系统管理员能够连接到服务器,并使用SHOW PROCESSLIST来诊断问题,即使已连接的无特权客户端数已达到最大值也同样。请参见13.5.4.16节,“SHOW PROCESSLIST语法”。
    MySQL能支持的最大连接数取决于给定平台上线程库的质量。Linux或Solaris应能支持500-1000个并发连接,具体情况取决于RAM容量,以及客户端正在作什么。MySQL AB提供的静态Linux库能支持高达4000个连接。
      

  4.   

    感谢大家的解释。弱弱的再问个问题,我使用PHP,一个页面上有10个 mysql_query SELECT FROM WHERE,是不是每个用户打开一个页面就算作10个connections?还是按 require_once 'data.php' 计算?是不是每个mysql_query 都有必要这样写?结尾处断开数据库链接,还是页面加载完毕后,会自动断开数据库?$db = mysql_select_db('data', $conn); 
    $result = mysql_query("SELECT...")
    mysql_close($conn); 
      

  5.   

    每个用户打开一个页面就算作1个connections
      

  6.   

     每运行一次会产生一个CONNECTION,但未必这10个都是并发的CONNECTION。
      

  7.   


    如果不写,会自动断开连接,但不要把这种事情留给系统来自动解决,正规的写代码要求是必须明确显式的写CLOSE。
      

  8.   

    OK,最后一个问题,1G内存(纯作connections使用,不作其他任何作用),大概可以设置多少个connections?
      

  9.   

    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
      

  10.   

    小型机+oracle能到 5000个连接,根据这个我推算pg可以到4000左右,多核+好硬盘+大内存+innodb+mysql5.5的话,2000应该没问题。sql2008r2的话,3000---4500?这个问题考的可是数据库的 真功夫~~