Mysql连接数、线程数、数据包

一、连接数

      1、查询允许的最大并发连接数。

      show variables like ‘max_connections';

      

       我们在用MySql客户端工具Navicat的时候,经常会遇到  ERROR  1040(08004):Too  many connections。导致这个问题的原因就是超过了最大连接数。

        2、修改最大连接数

        方法1:临时生效

        set global max_collections=300;

        方法2:永久生效

        查找my.ini或my.cnf文件,进行编辑设置。

        重启MySql服务。

         (查看mysql安装路径:show variables like '%char%';)

二、线程数

1、查看线程相关的状态变量

 

 输出说明:

  ①Threads_cached:缓存中的线程连接数。

  ②Threads_connected:当前打开的连接数,该值和show processlist;输出记录总数一样

 ③Threads_created:为处理连接而创建的线程数。如果该值很大,要增加thread_cache_size。缓存未命中率=Threads_created/Connections。

  ④thread_cache_size:当客户端断开时,如果缓存中的线程连接数即Threads_cached,比thread_cache_size小,那么这个客户端线程会被放入缓存,如果可能,重用缓冲中线程来满足线程请求。如果有许多新连接,可以增加该项值来提供性能。

  2、线程池调优

   thread_pool_size是控制线程池性能的最重要参数。仅在启动服务器时被设置。

   如果主引擎为InnoDB,thread_pool_size最佳设置可能在16到36之间,最常见的优化值为24到36.

   如果主引擎为MyISAM,thread_pool_size设置应该相当低。一般为4到8.

 3、查询正在执行的进程

  使用命令show processlist;


第一列id,一个标识,kill一条语句的时候有用。

第二列user列,显示当前用户,如果不是root,这个命令就只显示你权限范围内的sql语句。

第三列host列,显示这个语句是从哪个ip的哪个端口上发出的。用来追踪处问题语句的用户。

第四列db列,显示这个进程目前连接的是哪个数据库。

第五列command列,显示当前连接的执行的命令。一般就是休眠(sleep),查询(query),连接(connect)。

第六列time列,此状态持续的时间,单位是秒。

第七列state列,显示使用当前连接的sql语句的状态。

第八列info,显示sql语句,因为长度有限。所以长的sql语句显示不全。

4、查询正在执行的sql语句

select * from information_schema.`processlist` where info is not null;  是show processlist;的升级版,能够显示正在执行的sql语句。


三、数据包

       show variables like '%max_allowed_packet%'

        

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
MySQL连接数过多的情况有多种可能性。常见的情况包括没有正确关闭连接,导致连接数不断增加,当连接数达到最大限制时,会出现"Too many connections"错误。另外,在某些情况下,MySQL的默认最大连接数可能会被占用,导致无法通过登录MySQL来调整参来处理这个错误。 要解决此问题,可以采取以下方法: 1. 检查代码中的mysql_connect和mysql_close函是否正确使用。确保在每次使用完数据库连接后都调用了mysql_close来关闭连接,释放资源。 2. 使用命令行工具或者通过查询系统变量的方式,确认当前MySQL的最大连接数设置。可以通过以下命令登录MySQL并查询最大连接数: ``` sudo mysql -uroot -p ``` 然后输入密码,如果出现"ERROR 1040 (00000): Too many connections"错误,说明当前连接数已经达到了最大限制。 3. 查看当前MySQL连接情况。可以通过以下方式查看当前连接数和已经建立的连接数: ``` SHOW STATUS LIKE 'Threads_connected'; ``` 这将显示当前连接数。如果连接数过多,可以通过以下命令查看当前所有的连接: ``` SHOW PROCESSLIST; ``` 这将显示当前所有的连接和相关信息,包括连接的状态、用户和主机等。 4. 根据现有的连接数情况,评估是否需要增加最大连接数限制。如果连接数经常达到最大限制,可以考虑增加最大连接数。可以通过修改MySQL的配置文件my.cnf来设置最大连接数max_connections。找到该配置文件并添加或修改以下行: ``` max_connections = 200 ``` 然后重新启动MySQL服务。 需要注意的是,增加最大连接数可能会对服务器资源造成负担,因此在增加前需要评估服务器的性能和资源使用情况。 综上所述,解决MySQL连接数过多的问题,一方面需要检查代码中是否正确关闭连接,另一方面可以通过查询当前连接状态和最大连接数设置来评估并调整最大连接数限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值