一、MySQL连接数超标原因分析
MySQL的默认最大连接数为100(N),实际给普通用户使用只有N-1个,保留一个连接是留给超级管理员使用的,防止连接占满了不会把管理员也踢出来。很多网站在运行的时候都会出现连接数受限现象,天缘认为十之八九并非是网站的真实访问量太大导致连接数超标,更多是因为我们在设计网站程序的时候采用了不合理的设计架构或数据结构引起的。非正常连接超限可能原因如下(天缘即时归纳未必完整或无错讹仅供参考):
1、类似人数、在线时间、浏览数等统计功能与主程序数据库同属一个数据空间时就很容易出现
2、复杂的动态页尤其是用户每次浏览都涉及到多数据库或多表操作时候也很容易出现
3、还有就是程序设计的不合理(比如复杂运算、等待等操作放置在数据库交互行为中间进行),或者程序存在释放BUG。
4、计算机硬件配置太低确安装太高版、太高配置的MySQL
5、未采用缓存技术
6、数据库未经过优化或表格设计及其复杂
等等一些原因,都会延长数据库的数据交互时间或增加交互次数。所以,如果大家遇到这类问题,首先要考虑程序是否存在BUG导致连接释放失败,再次就是考虑优化软硬件。当然修改MySQL连接数也是软件优化的操作方法之一,希望天缘网友都能够本着学习的态度通过研究一下自身的原因从而解决这一问题。如果实在是找不到原因,那就只好先修改连接数,暂缓定位真实原因了。
二、怎样修改MySQL的最大连接数
1、使用内存变量修改法修改MySQL的最大连接数
步骤如下(同时适用Windows和Linux平台):
A、客户端登录MySQL,输入用户名和密码
B、在MYSQL命令提示符下设置新的最大连接数为500:mysql> set GLOBAL max_connections=500
C、显示当前运行的Query:mysql> show processlist
D、显示当前MYSQL 系统参数状态:mysql> show status
E、退出客户端:mysql> exit
查看当前最大连接数只需要通过在mysqladmin所在目录下执行以下命令:mysqladmin -username -password variables |find "max_con" 即可看到。也可以使用PHPMyadmin里头的MYSQL参数列表查看最大连接数。
缺点:重启计算机或者MySQL后最大连接数又会复位成初始值,需要重新设定。
2、修改my.ini或my.cnf文件法(需要重启MySQL),可参考同目录下MySQL的配置模板(小内存、大内存、超大内存)
Windows系统下:
打开my.ini文件找到set-variable =max_connections=100这一行,改成需要设定的最大连接数,然后重启即可。
Linux控制台下:
打开my.cnf文件:vi /etc/my.cnf
在[mysqld]段下修改max_connections的值为设定值。
天缘注:可能大家安装的MYSQL来源和版本不同(Windows下MySQL+IIS和PHP+Apache+MySQL套件最终安装结果几乎都不相同),my.ini文件的路径可能有些不同,my.ini可能还会保留一份在C:\Windows目录下需要同时修改。 |