经常看到网上有帖子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. 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-100000之间的数字。互相没有直接联系,与内存限制有关。网站上你的页面生成结束后,就会释放数据库连接。并不是你的用户阅读新闻的时候,它还连关数据库。其它在你看这篇帖子的时候,你的浏览器甚至已经与CSDN的WEB服务器已经断开了。
这个参数主要影响的是整个MySQL 应用的并发处理能力,当系统中实际需要的连接量大于
max_conecctions 的情况下,由于MySQL 的设置限制,那么应用中必然会产生连接请求的等待,
从而限制了相应的并发量。所以一般来说,只要MySQL 主机性能允许,都是将该参数设置的尽
可能大一点。
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个连接。
$result = mysql_query("SELECT...")
mysql_close($conn);
如果不写,会自动断开连接,但不要把这种事情留给系统来自动解决,正规的写代码要求是必须明确显式的写CLOSE。