mysql 太多的连接数_mysql连接数过多 解决方案

./mysqladmin -uroot -p1234.com status

Uptime: 1370150 Threads: 1 (当前连接数) Questions: 79 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.000

48304ba5e6f9fe08f3fa1abda7d326ab.png

./mysql -uroot -p1234.com -e 'show status' | grep -i Threads

Delayed_insert_threads 0

Slow_launch_threads 0

Threads_cached 1

Threads_connected 1

Threads_created 2

Threads_running 1 ##(当前连接数)

48304ba5e6f9fe08f3fa1abda7d326ab.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> show status like 'Threads%';

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

| Variable_name | Value |

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

| Threads_cached | 1 |

| Threads_connected | 1 |

| Threads_created | 2 |

| Threads_running | 1 | ###当前连接数

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

4 rows in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

查看最大连接数

[root@xxx bin]# ./mysql -uroot -p1234.com -e 'show variables' | grep max_connections

max_connections 500

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> show global variables like 'max_conn%';

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

| Variable_name | Value |

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

| max_connect_errors | 10 |

| max_connections | 500 |## 最大连接数

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

2 rows in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

解决方法:

想尽一切办法不重启

这种情况一般是进不去数据库了,修改配置文件得重启,对于线上的数据库风险太大了,进入数据库用sql修改,现在是进不去了

方法1:

使用gdb工具 不用进入数据库,不用重启数据库 方法如下:

48304ba5e6f9fe08f3fa1abda7d326ab.png

[root@xxx bin]# gdb -p $(cat /data/mydata/xxx.pid) -ex "set max_connections=500" -batch

[New LWP 7667]

[New LWP 4816]

[New LWP 341]

[New LWP 338]

[New LWP 337]

[New LWP 336]

[New LWP 335]

[New LWP 331]

[New LWP 330]

[New LWP 329]

[New LWP 328]

[New LWP 327]

[New LWP 326]

[New LWP 325]

[New LWP 324]

[New LWP 323]

[New LWP 322]

[Thread debugging using libthread_db enabled]

0x00000035654df1b3 in poll () from /lib64/libc.so.6

48304ba5e6f9fe08f3fa1abda7d326ab.png

查看mysql pid位置的方法

在配置文件 my.cnf里查找

用 ps -ef | grep mysql 查找

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> show variables like '%pid%';

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

| Variable_name | Value |

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

| pid_file | /data/mydata/xxx.pid |

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

1 row in set (0.00 sec)

48304ba5e6f9fe08f3fa1abda7d326ab.png

修改完毕后 ,尝试重新进入数据库,并查看链接数

这种方法设置后,只是暂时的,数据库重启后,会变为原来的数值,要想永久,设置完后修改配置文件my.cnf

方法2

前提是还可以进入数据库

进入数据库

设置新的最大连接数为200:mysql> set GLOBAL max_connections=200

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

显示当前状态:mysql> show status

退出客户端:mysql> exit

这种方法设置后,只是暂时的,数据库重启后,会变为原来的数值,要想永久,设置完后修改配置文件my.cnf

方法3:

需要重启数据库

修改 my.conf

max_connection = 1000;

模拟mysql连接数过多

脚本内容

48304ba5e6f9fe08f3fa1abda7d326ab.png

#!/bin/bash

set j=2

while true

do

let "j=j+1"

/usr/local/mysql/bin/mysqlslap -a -c 500 -i 10 -uroot -p1234.com

done

48304ba5e6f9fe08f3fa1abda7d326ab.png

运行此脚本  ,然后导致mysql连接数过多无法连接,多试几次确定无法连接  再用gdb工具测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值