文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mysql 最大连接数max_connections解决办法

2023-09-21 21:38

关注

问题原因

1)客户端程序在退出之前没有调用mysql_close()。[写程序的疏忽,或者数据库的db类库没有自动关闭每次的连接]

2)客户端sleep的时间在wait_timeout或interactive_timeout规定的秒内没有发出任何请求到服务器。[类似常连,类似于不完整的tcp ip协议构造,服务端一直认为客户端仍然存在(有可能客户端已经断掉了)]

3)客户端程序在结束之前向服务器发送了请求还没得到返回结果就结束掉了。[参看:tcp ip协议的三次握手]

解决办法

1删除过多的sleep连接。

2 修改max_connections 的最大连接数

mysql -uroot -ppassword 连接数据库

show variables like ‘max_connections’  查看最大连接数

SHOW full PROCESSLIST; 查看所有连接。

show status like 'Threads%'; 查看连接总数

四. 合理设置超时时间

之所以会出现大量 sleep 占满连接,除了业务量的原因外,也有可以从超时时间着手调整,可根据实际情况适当缩短超时时间,让 MySQL 可在短时间自动清理超时连接,以达到保证连接通常的目的。

mysqld 连接超时参数有以下两个:

默认情况下,两者都是 28800 秒(8 小时),我们可以在 MySQL 配置文件中修改这两个参数。

如果你使用的是mysql_pconnect 这种持久连接的话,可以将超时时间降到更合适的值,比如 600 (10 分钟)甚至 60(1 分钟)。这个超时时间并没有一个明确的时间,主要还是要看你的应用场景中的实际需求。

1.在配置文件中修改超时时间(需重启 MySQL 生效):

首先打开 mysqld.cnf 配置文件。

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

然后在配置文件中找到这两行,并修改对应的参数:

[mysqld]interactive_timeout=60wait_timeout=60

关于MySQL 配置文件详解,你可以查看卡拉云的另一篇博客《MySQL 配置文件 my.cnf / my.ini 逐行详解

2.临时变更连接超时时间(无需重启):

SET GLOBAL interactive_timeout = 60;SET GLOBAL wait_timeout = 60;

注意:

扩展阅读:《如何远程连接 MySQL 数据库,阿里云腾讯云允许远程连接教程

五. 查看及修改最大连接数

在 MySQL 中,默认连接数为 151,我们可以通过修改 MySQL 配置文件永久调整连接数参数,也可以通过 SQL 命令临时调整。

1.查看当前 MySQL 连接数

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

2.临时调整当前 MySQL 连接数

set GLOBAL max_connections = 300;

3.通过修改 MySQL 配置文件调整最大连接数

首先打开 MySQL 配置文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

在 [mysqld] 下面找到 max_connections ,如果没有可直接添加。

[mysqld]...max_connections = 300...

修改后重启 MySQL,使配置文件生效:

sudo systemctl restart mysql

重启后,进入 MySQL ,我们可以看到最大连接数配置已经生效。

mysql> show variables like '%max_connections%';+------------------------+-------+| Variable_name          | Value |+------------------------+-------+| max_connections        | 300   || mysqlx_max_connections | 100   |+------------------------+-------+2 rows in set (0.02 sec)mysql>

扩展阅读:《MySQL 配置文件 my.cnf / my.ini 逐行详解

六. 无法登录 MySQL 时,如何修改最大连接数

在无法登录又无法重启 MySQL 时,我们可以使用以下方法进行操作,以增大连接数。

1.修改 pid 增大连接数

我们可以使用 gdb 工具,在不进入数据库的情况下,修改最大连接数。

gdb -p $(cat data/kalacloud.pid) \-ex "set max_connections=5000" -batch

此方法仅适用于特殊、紧急情况,在生产环境使用,有一定风险,慎用。

七. 提前布局,防患于未然

在 MySQL 配置文件中,有两个有关连接数的参数

制定连接策略:

max_connections = 2000max_user_connections= 300

当 MySQL 有 6 个用户时(不含 root ),单个用户最大连接数为 300,那么 6 个用户最多有 1800 连接。那么系统总会剩下 200 个连接留给 root 使用。

 

来源地址:https://blog.csdn.net/a15804226768/article/details/127886517

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯