mysql: Too many connections

来源:互联网 发布:咫尺网络科技开发公司 编辑:程序博客网 时间:2024/05/16 13:38

今天开多一个应用在 APP SERVER 上,报告一个错误:

(原文链接 http://ddbiz.com/?p=172)

ERROR 1040 (00000): Too many connections

 

这倒是从来没碰到过,不过在 console 下可以用 root 登录 (console 下用其他用户也不可登录,Too many connections)

 

mysql -uroot -p

mysql > show processlist;

 

... 

 

这里列了100个链接!!其中只有2个链接是Query,其他的都是Sleep!!

 

 

 

 

mysql> show variables like '%connect%';

+--------------------------+-------------------+

| Variable_name            | Value             |

+--------------------------+-------------------+

| character_set_connection | latin1            |

| collation_connection     | latin1_swedish_ci |

| connect_timeout          | 5                 |

| init_connect             |                   |

| max_connect_errors       | 10                |

| max_connections          | 100               |

| max_user_connections     | 0                 |

+--------------------------+-------------------+

7 rows in set (0.00 sec)

 

这里的 max_connections 是100,我没有特别配置过,这是一个系统默认值。修改 /etc/my.cnf 如下:
[mysqld]
thread_cache_size=120
max_connections=150
把链接数提高到150
然后重启mysql。暂时能解决这个问题。
回想APP上的应用,想起来上面有个程序,是开了100个线程来访问数据库的,并且是每次访问时打开connection,完成sql语句后就关闭。可是为什么这些链接会状态全部是 Sleep 而不释放链接呢?

(原文链接 http://ddbiz.com/?p=172)