mysql: Too many connections
今天开多一个应用在 APP SERVER 上,报告一个错误:
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 而不释放链接呢?
相关文档:
connect方法是java.sql.Driver接口中定义的方法,如果连接的数据库不同,那么为不同的数据库编写JDBC驱动将变得很灵活,实现Driver接口即可。连接数据库时首先得装载JDBC驱动,也就是调用 Class.forName(“com.mysql.jdbc.Driver”)方法,在第一篇中已经列出mysql jdbc Driver类的源码,此类继承NonRegisteringD ......
在Ubuntu下安装的MySQL默认配置下的数据库文件存储位置是在/var/lib/mysql,
MySQL数据库的文件结构是怎么样的呢,对于这样子创建的数据库命令:
CREATE DATABASE mysqldb
在默认的数据库存储位置下就会有个文件夹mysqldb。要操作数据库首先得停止数据库进程:
$sudo /etc/init.d/mysql stop
本文以转 ......
测试环境:mysql 5.0.45 【注:可以在mysql中通过mysql> SELECT VERSION();来查看数据库版本】整理:Webjx.Com 一、连接MYSQL。格式: mysql -h主机地址 -u用户名 -p用户密码 1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格 ......
Timestamp翻译过来也叫“时间戳”,可以包含“年-月-日-时-分-秒-毫秒”,是java.util.Date下的一个子类。如果想实现向Mysql中插入带有时分秒的时间,在表结构里需要指定字段类型为DateTime,Java程序里在获取系统时间后需要转换为时分秒的格式,再转换为Timestamp即可,如下所示:
Date dt = new Dat ......
在mysql中输入SHOW variables like "have_%"查看,显示如下:
mysql> SHOW variables like "have_%";
+-----------------------+----------+
| Variable_name | Value |
+-----------------------+----------+
| have_archive   ......