我们经常会遇见“MySQL: ERROR 1040: Too many connections”的情况,一种是访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读写压力,另外一种情况是MySQL配置文件中max_connections值过小。

数据库连接池最小连接数和最大连接数:

最小连接数是连接池一直保持的数据连接。如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费掉。

MySQL默认的最大连接数为100,MySQL服务器允许的最大连接数16384

最大连接数是连接池能申请的最大连接数。如果数据连接请求超过此数,后面的数据连接请求将被加入到等待队列中,这会影响之后的数据库操作。如果最小连接数与最大连接数相差太大,那么,最先的连接请求将会获利,之后超过最小连接数量的连

接请求等价于建立一个新的数据库连接。不过,这些大于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。

MySQL服务器的连接数并不是要达到最大的100%为好,还是要具体问题具体分析

查看当前数据库的参数信息可用:mysql>show variables;

mysql> show variables like 'max_connections';+-----------------+-------+

| Variable_name | Value |

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

| max_connections | 650 |

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

这台MySQL服务器最大连接数是650,然后查询一下服务器响应的最大连接数:

mysql> show global status like 'Max_used_connections';MySQL服务器最大连接数是650,没有达到服务器连接数上限650,应该不会出现oo many connections(1040)错误,比较理想的设置是:

Max_used_connections / max_connections * 100% ≈ 85%

最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接上限就设置得过高了。

从以下几种方法都可以实现修改连接数的目的。

1. 进入到mysql的安装目录找到mysqld_safe(我的安装路径是:cd /opt/mysql-5.6/bin/mysqld_safe);

vim mysqld_safe

找到

then $NOHUP_NICENESS $ledir/$MYSQLD

$defaults --basedir=$MY_BASEDIR_VERSION

--datadir=$DATADIR $USER_OPTION

--pid-file=$pid_file

--skip-external-locking

-O max_connections=650

>> $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=650>>

$err_log 2>&1"

红色行代表要添加的字段。保存,退出。

重启mysql服务,即可。

查看当前数据库的参数信息可用:mysql>show variables;

2. 相对来说比较简单,直接更改mysql的配置文件my.cnf找到max_connections将默认值改为你需要的值,保存退出,重启服务即可。

3.命令行方式更改最大连接数:以管理员身份登录到数据库:

mysql>set GLOBAL max_connections=650

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

显示当前状态:mysql> show status

对于并发较大的系统,建立一次连接然后缓存起来连续使用,直到程序结束等情况下再释放连接,就能够将系统资源集中在对数据库操作的处理上,从而大大提高性能。通常情况下将数据连接的建立和断开委托给一种能够数据库连接池的组件或服务进行管理。而DBCP, C3p0, Proxool等都是常用的开源的连接池组件。

在修改最大连接数的时候会有这样一个疑问—这个值是不是越大越好,或者设置为多大才合适?这个参数的大小要综合很多因素来考虑,比如使用的平台所支持的线程库数量、服务器的配置(特别是内存大小)、每个连接占用资源(内存和负载)的多少、系统需要的响应时间等。可以在global或session范围内修改这个参数。连接数的增加会带来很多连锁反应,需要在实际中避免由此引发的负面影响。

MySQL为每个连接分配线程来处理,可以通过threads_connected参数查看当前分配的线程数量:

mysql> show status like '%thread%';

比较threads_connected参数和前面提到的max_connections参数,也可以作为目前的系统负载的参照,决定是否需要修改连接数。

mysql 连接池 数量_mysql合理配置连接池数量相关推荐

  1. mysql jdbc存放位置_mysql,jdbc、连接池

    在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节. 1byte=8bit 1byte就是1B 1KB=1024B free -m Mem"后的total ...

  2. mysql开通远程连接不上去_MySQL本地可以连接,远程连接不上的问题_夜风的BLOG-CSDN博客_mysql远程连接不上...

    之前遇到过MySQL本地可以连接但是远程连不上的问题,没有记录,今天在ucloud云上新申请的服务器上又遇到这个问题,记录一下解决过程. 1. 排除网络或防火墙问题 先看是否能ping通远程服务器,p ...

  3. linux中mysql主主搭建_mysql 主从配置 主主配置

    MySQL 主从( MySQL Replication) ,主要用于 MySQL 的时时备份或者读写分离.在配置之前先做一下准备工作,配置两台 mysql 服务器,如果你的机器不能同时跑两台 Linu ...

  4. java手动线程池使用_Java手动配置线程池过程详解

    线程池中,常见有涉及到的: ExecutorService executorService = Executors.newSingleThreadExecutor(); ExecutorService ...

  5. mysql 最大连接池数_mysql 最大连接数 连接池

    MySQL最大连接数 关于最大连接数:http://mg123.lofter.com/post/1a5f3e_996f838 可以通过修改配置文件(默认/etc/my.cnf)中的"mysq ...

  6. mysql连接指定时区_MySQL创建JDBC连接时区问题

    报错内容: ErrorCode=0 SQLState=01S00 The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or repres ...

  7. php mysql 连接方法 对比_Mysql实例php连接MySQL的两种方式对比

    <Mysql实例php连接MySQL的两种方式对比>要点: 本文介绍了Mysql实例php连接MySQL的两种方式对比,希望对您有用.如果有疑问,可以联系我们. MYSQL数据库记录一下P ...

  8. mysql ssl连接是什么_mysql 的ssl连接是什么

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  9. mysql 内连接查询总数_MySQL - 统计内连接查询

    由于您只有一个聚合,并且您似乎按Properties行进行分组,因此这应该相对容易.你的意思是这样的(未经测试)? SELECT p.title, p.state, p.city, p.regionI ...

最新文章

  1. TransDecoder
  2. 既然使用神经网络也可以解决分类问题,那SVM、决策树这些算法还有什么意义呢?...
  3. 天联高级版客户端_天联客户端登录的KIS旗舰版打印单据问题
  4. 搭建tidb集群linux_无服务器计算,学习Go,Linux系统恢复,TiDB,Udev等
  5. java 定时执行任务
  6. Vue-router路由使用,单页面的实现
  7. VS2008超有用的快捷键
  8. JavaScript(第二十七天)【错误处理与调试】
  9. 机器学习——KNN及代码实现
  10. 预算分配Budget Allocation:Morphl-AI的营销科学解决方案(一)
  11. 堆排序算法(C#实现)
  12. web.xml中配置spring的几种方式
  13. 自动采集小说程序源码
  14. android如何查看手机中的db文件,查看sqlite数据库的表结构
  15. Python源码阅读(一)
  16. 全国高校经纬度(txt版)
  17. 多元素过渡理解和一点透
  18. 新手学习Django的十条注意点
  19. IDE工具、文本编辑器的列块编辑模式
  20. 0xc0000225无法进系统_Win10无法开机0xc0000225错误代码解决方法

热门文章

  1. 利用Lucene.net搭建站内搜索(3)---创建索引
  2. php软件开发--nginx服务器(待补充)
  3. php软件开发--php进阶
  4. python循环体执行的次数与其他不同的是_【单选题】下面Python循环体执行的次数与其他不同的是( )...
  5. opensource项目_Best of Opensource.com 2017:排名前27的文章和资源
  6. (19)脚手架工具Yeoman
  7. VSCode自定义代码片段5——HTML元素结构
  8. php公众号客服消息图文,微信公众号开发系列-发送客服消息(示例代码)
  9. oracle查询数据库日志大小,Oracle的日志缓冲区大小查询方法———学习笔记 | 学步园...
  10. matlab在activex中读取视频,[转载]matlab读取excel数据并显示在excel(activex控件)中