PHP下出现Too many connections

PHP下出现Too many connections。。

[雪里飘]在2004-5-16 20:03:00写到
Discuz! info: Can not connect to MySQL serverUser: xxxx
Time: 2003-6-25 11:01am
Script: /bbs/index.phpError: Too many connections
Errno.: 1040

Similar error report has beed dispatched to administrator before.

解决方法很简单:

1、用的是虚拟主机:空间商限制了,要求增加。。或者加钱 -_-!

2、用的是自个服务器:有两种方法:

<一>打开my.ini,在[WinMySQLadmin]上加入以下代码(含优化)

set-variable=max_connections=5000
set-variable=key_buffer=16M
set-variable=table_cache=128
set-variable=sort_buffer=4M
set-variable=record_buffer=1M

其中第一行最关健,就是设置最高连接数。。

<二>打开php.ini:

修改数据库的设置往往不能够起到作用的,而且会很吃内存的。
建议修改php.ini
查找:
mysql.allow_persistent = On改成:
mysql.allow_persistent = off

问题就不会出现了。

第二种未具体测试,不过推荐两个一起改。。

Linux的看这里:
mysql -uxyz -pxxxx -h172.168.192.3 db_money
ERROR 1040: Too many connectionsmysql默认情况下允许的连接数是100个,  所以偶们要修改mysql的配置文件并重启mysql
vi /etc/my.cnf
max_connections = 1000  #修改为1000, 注意, 默认情况下普通用户能打开的文件句柄最大为1024, 所以如果这里改成1024以上也是无效的, 当然对特殊情况, 比如修改了进程打开的文件句柄最大数当别论。

mysqladmin shutdown  # 如果这里还报too many connections的话, 就直接kill -9 pid了
/usr/local/mysql/bin/mysqld_safe &   启动mysql, 记得加上 &  符号, 免得退出了退出了命令行,mysql又自动关闭了

完整分析:

MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两个

方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100   修改为 max_connections=1000 服务里重起MYSQL即可

方法二:MySQL的最大连接数默认是100客户端登录:mysql -uusername -ppassword

设置新的最大连接数为200:mysql> set GLOBAL max_connections=200

显示当前运行的Query:mysql> show processlist

显示当前状态:mysql> show status

退出客户端:mysql> exit

查看当前最大连接数:mysqladmin -uusername -ppassword variables

 

方法三:以centos 4.4 下面的mysql 5.0.33 手工编译版本为例说明:

vi /usr/local/mysql/bin/mysqld_safe

找到safe_mysqld编辑它,找到mysqld启动的那两行,在后面加上参数 :

-O max_connections=1500

具体一点就是下面的位置:

用红字特别说明:

then $NOHUP_NICENESS $ledir/$MYSQLD

$defaults --basedir=$MY_BASEDIR_VERSION

--datadir=$DATADIR $USER_OPTION

--pid-file=$pid_file

--skip-external-locking

-O max_connections=1500

>> $err_log 2>&1 else

eval "$NOHUP_NICENESS $ledir/$MYSQLD

$defaults --basedir=$MY_BASEDIR_VERSION

--datadir=$DATADIR $USER_OPTION

--pid-file=$pid_file

--skip-external-locking $args

-O max_connections=1500 >>

$err_log 2>&1"

保存。

# service mysqld restart

# /usr/local/mysql/bin/mysqladmin -uroot -p variables

输入root数据库账号的密码后可看到

max_connections 1500 即新改动已经生效。

还有一种方法,

修改原代码:

解开MySQL的原代码,进入里面的sql目录修改mysqld.cc找到下面一行:

{"max_connections", OPT_MAX_CONNECTIONS,

"The number of simultaneous clients allowed.", (gptr*) &max_connections,

(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,

0},

把它改为:

{"max_connections", OPT_MAX_CONNECTIONS,

"The number of simultaneous clients allowed.", (gptr*) &max_connections,

(gptr*) &max_connections, 0, GET_ULONG, REQUIRED_ARG, 1500, 1, 16384, 0, 1,

0},

存盘退出,然后./configure ;make;make install可以获得同样的效果。

版权声明:
作者:Kiyo
链接:https://www.wkiyo.cn/html/2008-01/i309.html
来源:Kiyo's space
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>