java后台报Too many connections

问题:

服务器打不开了,后台报com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Too many connections。很显然数据库连接数过多..解决方向应该是去查看一下数据库的实际连接数以及数据库允许的最大连接数。看看是不是真的超标了。


最快的解决方案:重启mysql,我原来的连接数为下面的25个,重启后变成5个。

mysql> show processlist;
+----+------+-----------------+--------------+---------+------+-------+---------
---------+
| Id | User | Host            | db           | Command | Time | State | Info
         |
+----+------+-----------------+--------------+---------+------+-------+---------
---------+
|  1 | root | localhost:52454 | txman_master | Sleep   |   28 |       | NULL
         |
|  2 | root | localhost:52455 | txman_master | Sleep   |  388 |       | NULL
         |
|  3 | root | localhost:52456 | txman_master | Sleep   |  388 |       | NULL
         |
|  4 | root | localhost:52457 | txman_master | Sleep   |   28 |       | NULL
         |
|  5 | root | localhost:52462 | NULL         | Query   |    0 | NULL  | show pro
cesslist |
+----+------+-----------------+--------------+---------+------+-------+---------
---------+
5 rows in set (0.00 sec)




解决:

1.命令行查询连接状态。

C:\Users\Administrator>mysqladmin -uroot -p123456 status
Uptime: 913  Threads: 9  Questions: 214  Slow queries: 0  Opens: 17  Flush table
s: 1  Open tables: 10  Queries per second avg: 0.234
    使用root登录后,查看详细的连接

mysql> show processlist;
+----+------+-----------------+--------------+---------+------+-------+---------
---------+
| Id | User | Host            | db           | Command | Time | State | Info
         |
+----+------+-----------------+--------------+---------+------+-------+---------
---------+
|  1 | root | localhost:51111 | txman_master | Sleep   |  238 |       | NULL
         |
|  2 | root | localhost:51110 | txman_master | Sleep   |  238 |       | NULL
         |
|  3 | root | localhost:51112 | txman_master | Sleep   |  238 |       | NULL
         |
|  4 | root | localhost:51113 | txman_master | Sleep   |  238 |       | NULL
         |
|  5 | root | localhost:51114 | txman_master | Sleep   |  238 |       | NULL
         |
|  6 | root | localhost:51115 | txman_master | Sleep   |  238 |       | NULL
         |
|  7 | root | localhost:51116 | txman_master | Sleep   |  238 |       | NULL
         |
|  8 | root | localhost:51117 | txman_master | Sleep   |  238 |       | NULL
         |
| 14 | root | localhost:52039 | NULL         | Sleep   |  632 |       | NULL
         |
| 15 | root | localhost:52040 | NULL         | Sleep   |  633 |       | NULL
         |
| 18 | root | localhost:52046 | NULL         | Sleep   |  612 |       | NULL
         |
| 19 | root | localhost:52047 | NULL         | Sleep   |  612 |       | NULL
         |
| 22 | root | localhost:52140 | txman_master | Sleep   |  238 |       | NULL
         |
| 23 | root | localhost:52141 | txman_master | Sleep   |  238 |       | NULL
         |
| 21 | root | localhost:52139 | txman_master | Sleep   |  238 |       | NULL
         |
| 24 | root | localhost:52142 | txman_master | Sleep   |  238 |       | NULL
         |
| 25 | root | localhost:52144 | txman_master | Sleep   |  238 |       | NULL
         |
| 26 | root | localhost:52143 | txman_master | Sleep   |  238 |       | NULL
         |
| 27 | root | localhost:52145 | txman_master | Sleep   |  238 |       | NULL
         |
| 28 | root | localhost:52146 | txman_master | Sleep   |  238 |       | NULL
         |
| 29 | root | localhost:52147 | txman_master | Sleep   |  238 |       | NULL
         |
| 30 | root | localhost:52148 | txman_master | Sleep   |  238 |       | NULL
         |
| 31 | root | localhost:52149 | txman_master | Sleep   |    6 |       | NULL
         |
| 32 | root | localhost:52150 | txman_master | Sleep   |    6 |       | NULL
         |
| 34 | root | localhost:52333 | NULL         | Query   |    0 | NULL  | show pro
cesslist |
+----+------+-----------------+--------------+---------+------+-------+---------
---------+
25 rows in set (0.00 sec)


2.查看允许的最大连接数

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+
1 row in set (0.00 sec)

3.

第一种方案:root登录,修改最大连接数

mysql> set global max_connections=200;
Query OK, 0 rows affected (0.00 sec)

验证修改后的结果

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 200   |
+-----------------+-------+
1 row in set (0.00 sec)
第二种方案:修改mysql的配置文件my.ini的max_connections配置项

经测试,my.ini的配置项会高于第一方案。我两种方案都是用了,最终查询变量的结果是:

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 150   |
+-----------------+-------+
1 row in set (0.00 sec)




### Zabbix 登录时出现 'Too many connections' 的解决方案 当遇到 `Too many connections` 错误时,这通常意味着 MySQL 数据库的最大连接数已达到上限。对于 Zabbix 来说,这个问题可能会影响系统的正常运作以及用户的登录体验。 #### 调整 MySQL 最大连接数配置 为了增加可用的数据库连接数量,可以修改 MySQL 配置文件中的 `max_connections` 参数: 1. 编辑 MySQL 配置文件 `/etc/my.cnf.d/server.cnf` 或者其他位置的具体路径取决于操作系统和安装方式。 ```ini [mysqld] max_connections=1000 ``` 2. 修改完成后保存更改并重启 MySQL 服务以使新设置生效: ```bash systemctl restart mysqld.service ``` 通过上述操作能够有效提升允许的同时连接数目,从而缓解因连接池耗尽而导致的服务不可用情况[^1]。 #### 动态调整最大连接数 如果不想编辑配置文件也可以直接在命令行中临时提高最大连接数限额: ```sql SET GLOBAL max_connections = 1000; ``` 这种方式不需要重新启动MySQL服务就能立即应用新的参数值,但是需要注意的是该变更仅对当前会话有效,在下次重启之后将会恢复默认设定[^2]。 #### 关闭闲置连接 有时即使增加了最大连接数仍然无法彻底解决问题,因为可能存在大量处于非活动状态但仍占用资源的僵尸进程。可以通过执行以下 SQL 命令来清理这些不必要的连接: ```sql SHOW PROCESSLIST; -- 查看所有正在运行的任务列表 KILL <thread_id>; -- 终止指定ID对应的线程 ``` 另外还可以考虑优化应用程序逻辑减少不必要的长期挂起请求,从根本上降低并发量过高的风险[^3]。 #### 监控与预防措施 为了避免将来再次发生类似的状况,建议定期监控数据库性能指标,并根据实际需求合理规划硬件资源配置;同时也要关注软件版本更新带来的改进特性,及时升级至更稳定高效的发行版。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值