mysql 最大连接数max_connections解决办法

这篇具有很好参考价值的文章主要介绍了mysql 最大连接数max_connections解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.问题原因

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

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

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

2.解决办法

2.1删除过多的sleep连接。

2.2 修改max_connections 的最大连接数

mysql -uroot -ppassword 连接数据库

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

SHOW full PROCESSLIST; 查看所有连接。

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

四. 合理设置超时时间

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

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

  • interactive_timeout
  • wait_timeout

默认情况下,两者都是 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=60
wait_timeout=60

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

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

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

注意:

  • 这是临时变更配置的方法,在重启 MySQL 后会恢复配置文件中的设置值。
  • 对于已经打开的连接,是不会被关闭的。只有新建立的连接才会在 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;

mysql 最大连接数max_connections解决办法

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
  • data/kalacloud.pid:将这里修改为你服务器中 pid 的文件路径及文件名。

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

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

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

  • max_connections:控制最大连接数。
  • max_user_connections:控制单个用户的最大连接数。当此参数为 100 时,那么任意用户(含 root 用户)最多可创建 100 个连接。

制定连接策略:

max_connections = 2000
max_user_connections= 300

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

 文章来源地址https://www.toymoban.com/news/detail-482067.html

到了这里,关于mysql 最大连接数max_connections解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Azure - VM] 解决办法:无法通过SSH连接VM 解决错误 This service allows sftp connections only.

    本文主要针对 Azure VM 被锁住不能使用 SSH 登陆的解决办法。 在Azure的虚拟机中,想创建一个SFTP用户且想限制这个SFTP用户只能访问固定的目录,于是对 sshd_config 进行修改,在配置文件中增加了 ChrootDirectory 、 ForceCommand Match User 和 AllowTcpForwarding 設定。 重启ssh服务后,造成所有

    2024年02月11日
    浏览(45)
  • 使用STM32CubeMX配置工程,烧录时出现No target connected(没有目标连接)的错误解决办法

    目录      一、解决方法: 二、错误原因: 在Keil5使用ST-link烧录重新到STM32时出现如图错误解决方法:          网上看到的方法很多都是按住复位键不动,然后在点击下载的同时快速松开单片机复位键,这就要考验我们的手速了,虽然这样也行,不过这样并不能解决根本

    2024年02月15日
    浏览(50)
  • MySQL----MySQL数据库出现Lost connection to MySQL server during query错误的解决办法

    【原文链接】MySQL----MySQL数据库出现Lost connection to MySQL server during query错误的解决办法 Mysql数据库在查询数据库的时候回报出了如下异常:Lost connection to MySQL server during query,具体异常信息如下: 1、在数据库中查看如下变量的值 可以看到这里的net_read_timeout和net_write_timeout分别

    2024年02月16日
    浏览(51)
  • mysql不能远程连接的解决办法

      MySQL数据库不能远程连接的原因可能有以下几个: MySQL没有开启网络连接。 MySQL默认只监听本地连接,需要在配置文件my.ini或者/etc/my.cnf中设置bind-address为服务器IP,开启网络连接。 MySQL没有开启远程访问权限。 MySQL默认只允许root用户在本地登录,需要授权远程访问权限。 可以执

    2024年02月04日
    浏览(33)
  • Host is not allowed to connect to this MySQL server的解决办法

    首先我们在学习Java时,我们链接的MySql里面没有数据,我们也不知道有些什么数据,于是我们会有一种办法来继续进行我们代码的编写。 1.第一步是我的电脑必须要和我想使用的那个人的电脑处在同一个局域网下,例如学生在学校里面可以两台电脑同时连上学校的校园网;我

    2024年02月11日
    浏览(50)
  • 开启redis服务后,无法远程连接服务器上的redis的问题解决办法(Connection refused: no further information)

    远程连接在服务器上的redis服务时,总是会报错Connection refused: no further information,通过一顿查资料后,我总结了一下几个解决步骤。 1.首先通过通过命令vim ****/redis.conf打开***目录下的redis配置文件 2.对bind设置,将bind 127.0.0.1注释掉. 3.将保护模式关闭,由yes设置成no.  4.reids4.5以

    2024年02月10日
    浏览(55)
  • fatal: 无法访问 https://github.com/ :Failed to connect to github.com port 443: 拒绝连接的解决办法

    最近在ubuntu20.04安装PCL1.9.1的过程中,在从github 下载pcl时遇到了 fatal: 无法访问 https://github.com/PointCloudLibrary/pcl.git/ :Failed to connect to github.com port 443: 拒绝连接 这个问题。 解决办法:在终端输入 sudo gedit /etc/hosts ,打开/etc/hosts文件,然后注释掉所有只涉及到github.com的行(注意是

    2024年02月12日
    浏览(57)
  • Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接。(极简解决办法)

    在需要启动Redis客户端的时候,会发现会报这个错误。报这个错误的原因就是Redis的服务端没有开启,那Redis的客户端是访问不了的 1. 解决的办法就是要启动服务端,让这个客户端可以访问到。启动服务端最简单不会出错的办法就是去安装目录下,直接双击启动服务端( redi

    2023年04月09日
    浏览(45)
  • Windows和Linux环境下忘记MySQL连接密码的解决办法

    目录 一、Linux下MySQL忘记root密码 情景再现 1、停止MySQL服务 2、安全模式启动MySQL服务,并暂时跳过权限表验证以及禁用网络连接 3、更新 mysql.user 表中 root 用户的密码。 4、刷新MySQL的权限缓存 二、Windows下MySQL忘记密码(8.0以上版本) 情景再现 1、通过管理员方式打开cmd,cmd程

    2024年04月12日
    浏览(40)
  • 连接MySQL出现Host is not allowed to connect to this MySQL server 解决方法

    翻译: ‘不允许主机连接到此MySQL服务器’ (意思是本地账号连接可以登录,但是远程登陆不行 进入mysql 输入数据库密码 不知道密码可以去查 输入该命令行后看 root@localhost:后的内容就是密码 进入后依次输入下列命令行 最后退出mysql

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包