message from server: “Too many connections”

2024年 7月 20日 90.0k 0

你们好,我是金金金。

message from server:

场景

message from server:

  • 启动服务时,报错如上:数据源拒绝建立连接,服务器发送消息:“连接过多”

排查

看报错信息提示的很明显了

  • 查看MySQL 数据库中最大允许连接数的配置信息(我mysql是部署在docker容器的,所以如下命令需要进入mysql容器内并且登录mysql之后执行)
  • docker exec -it mysql bash   # 进入mysql容器
    mysql -u root -p  # 登录mysql
    SHOW variables LIKE "%max_connections%";    # 查看最大连接数信息
    

    message from server:

    • max_connections:MySQL数据库服务器的参数,指定了服务器可以同时接受的最大客户端连接数量。如果尝试建立的新连接超过这个限制,服务器将拒绝连接请求。这个参数的默认值通常是150。
    • mysqlx_max_connections:这是MySQL数据库服务器的参数,用于控制通过MySQL X协议(用于MySQL的新的高级协议)连接到服务器的最大连接数。MySQL X协议提供了更现代和强大的功能,比如支持异步查询和事务。mysqlx_max_connections指定了服务器可以同时接受的最大MySQL X连接数。如果尝试建立的新连接超过这个限制,服务器将拒绝连接请求。这个参数的默认值通常是100。
  • 查询当前数据库服务器已连接的线程数量
  • SHOW STATUS LIKE 'Threads_connected';
    

    message from server:

    • 很明显,已经超过100了,所以数据源拒绝建立连接

    造成error的原因

    • 数据库连接过多

    解决

    有多种解决方案。

  • 重启mysql服务

    • 重启 MySQL 服务会导致所有现有的数据库连接被关闭。当 MySQL 服务器重启时,它会结束所有当前的进程,并清除 SHOW PROCESSLIST; 命令显示的所有线程信息。这意味着所有处于 "Sleep" 状态的线程、正在执行查询的线程,以及其他所有类型的数据库连接都会被终止
  • 修改最大连接数(docker中修改mysql最大连接数及配置文件,因为我mysql是部署在docker容器的)
    2.1 临时修改:重启mysql后就不生效

  • docker exec -it mysql /bin/bash
  • mysql -u root -p root
  • SET GLOBAL max_connections = 200;
  • 2.2 永久修改:重启mysql后也生效

    • 要永久修改 max_connections 的值,需要编辑MySQL的配置文件(通常是 my.cnf 或 my.ini,根据你的操作系统和MySQL安装方式而异)

    找到MySQL的配置文件。这个文件通常位于以下位置之一:

    • 在Unix/Linux系统上:/etc/my.cnf/etc/mysql/my.cnf, 或 ~/.my.cnf
      • 我这里mysql是在docker容器下的,所以在容器目录内

    message from server:
    - 在Windows系统上:通常是MySQL安装目录下的 my.ini

    • 我这里是liunx环境,mysql是部署在docker容器的
    • 打开配置文件 mysql容器下 /etc/mysql/my.cnf 文件, vi my.cnf文件编辑, 在 [mysqld] 部分下面添加或修改 max_connections 的值:
    • 容器内部默认是没有vim编辑器的,所以需要自己装一下
    apt-get install vim
    
    • 修改内容如下
    [mysqld] 
    max_connections = 200
    

    message from server:

    • 保存配置文件并重启MySQL容器以使更改生效。
    docker restart mysql
    

    message from server:

    • 然后我们进入mysql容器并且登录mysql 验证测试一下最大连接数是否变成了200,如下图,修改成功!

    message from server:

    总结

    连接过多,所以被拒绝连接了,我这边采用的方案是扩大最大连接数~

    • 编写有误还请大佬指正,万分感谢。

    相关文章

    Oracle如何使用授予和撤销权限的语法和示例
    Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
    下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
    社区版oceanbase安装
    Oracle 导出CSV工具-sqluldr2
    ETL数据集成丨快速将MySQL数据迁移至Doris数据库

    发布评论