Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2397934
  • 博文数量: 195
  • 博客积分: 3409
  • 博客等级: 中校
  • 技术积分: 3954
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-24 10:21
个人简介

● ITPUB名人堂嘉宾 ● ChinaUnix社区博客专家 ● ChinaUnix社区Oracle板块版主 ● 优酷网认证音乐牛人:EricGuitar ● SDOUG 核心成员 ●E-mail:gaoqiangdba@163.com

文章分类

全部博文(195)

文章存档

2020年(7)

2019年(7)

2016年(5)

2015年(36)

2014年(23)

2013年(15)

2012年(23)

2011年(61)

2010年(18)

分类: Mysql/postgreSQL

2020-09-16 16:27:01

在运维过程中用,有可能会遇到连接数不足的情况,一般会报”Too many connections”的错误。

分享一下实际项目中的简单的经验:


实际环境MySQL5.7版本中的连接状态查看:

点击(此处)折叠或打开

  1. mysql> show variables like '%max_connections%';

  2. +-----------------+-------+

  3. | Variable_name | Value |

  4. +-----------------+-------+

  5. | max_connections | 151 |

  6. +-----------------+-------+

  7. 1 row in set (0.00 sec)



执行结果参数解释:
1、简练解释:
Thread_cached:被缓存的线程的个数
Thread_running:处于激活状态的线程的个数
Thread_connected:当前连接的线程的个数
Thread_created:总共被创建的线程的个数
2、细节补充:
Threads_running :这个数值指的是激活的连接数,这个数值一般远低于connected数值.相当于实际的并发数。
Threads_connected: 跟show processlist结果相同,表示当前连接数。准确的来说,Threads_running是代表当前并发数。
Theads_cached: mysql建立连接非常消耗资源,当已有连接不再使用之后,mysql server不是直接断开连接,而是将已有连接转入到thread_cache中,以便下次在有create thread的需求时,可以在cache中复用,提高性能,降低资源消耗。当然,如果已经有了中间件或者其他的连接池管理,那么这个参数就没有那么重要了,但是如果没有其他的连接池管理,那么优化这个参数还是可以得到不错的回报的。


参数调整之前查看当前数据库设置的最大连接数:



点击(此处)折叠或打开

  1. mysql> show variables like '%max_connections%';


  2. +-----------------+-------+


  3. | Variable_name | Value |


  4. +-----------------+-------+


  5. | max_connections | 151 |


  6. +-----------------+-------+


  7. 1 row in set (0.00 sec)


设置最大连接数是实时生效的,同时也是临时的,会随着重启数据库而恢复到my.cnf所指定的值:



点击(此处)折叠或打开

  1. mysql> set GLOBAL max_connections=10000;

  2. Query OK, 0 rows affected (0.00 sec)

  3. mysql> show variables like '%max_connections%';

  4. +-----------------+-------+


  5. | Variable_name | Value |


  6. +-----------------+-------+


  7. | max_connections | 10000 |


  8. +-----------------+-------+


  9. 1 row in set (0.00 sec)


要是想永久保持着设置的值,可以在配置文件中声明,这样即使是重启也不会影响参数值:

修改mysql配置文件my.cnf,在[mysqld]段中添加或修改max_connections值:

max_connections=10000

重启mysql服务后也会永久生效。


总体来说,该参数在服务器资源够用的情况下应该尽量设置大,以满足多个客户端同时连接的需求。否则将会出现类似”Too many connections”的错误。


阅读(77) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~