【MySQL进阶之路】生产案例:数据库无法连接,Too many connections

本文主要是介绍【MySQL进阶之路】生产案例:数据库无法连接,Too many connections,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送!

在我后台回复 「资料」 可领取编程高频电子书
在我后台回复「面试」可领取硬核面试笔记

文章导读地址:点击查看文章导读!

感谢你的关注!

在这里插入图片描述

生产案例:数据库无法连接,Too many connections

在这个生产案例中:

数据库被部署在了一个很高配的服务器上,内存有 64GB

Java 应用部署在两台机器上,每个 Java 应用设置的连接池的最大数量为 200,也就是每个 Java 应用可以和 MySQL 建立 200 个连接,那么 2 个 Java 应用也就和 MySQL 建立 400 个连接

但是此时数据库出现了异常,报错 Too many connections,也就是数据库给你说连接已经太多了,无法再建立了

请添加图片描述

对于 64GB 的高配服务器来说,不可能连 400 个连接都没办法建立

造成这个问题的原因其实就是 Linux 服务器的文件句柄数量的设置,默认情况下是 1024,由于在服务器中还有其他应用占用了一部分文件句柄数量,从而导致留给 MySQL 建立连接的文件句柄数量不够,因此无法建立连接!

为什么文件句柄数量会限制 MySQL 的连接数量呢?

因为在 Linux 服务器中,一切皆文件,因此 MySQL 建立的连接都会作为文件存在,因此文件句柄数量限制着 MySQL 无法建立太多的连接!

修改文件句柄数量

vi /etc/security/limits.conf
# 添加如下行
* soft nofile 65535
* hard nofile 65535

修改之后,问题就可以解决了

重启当前 linux 服务器的会话(也就是将 xshell 关闭之后,再重新连接上),使用命令查看修改是否生效:

# 显示当前用户的最大文件描述符限制可以使用以下命令:
ulimit -n

在 Linux 中,为了避免某个进程耗光了机器的所有资源,因此默认情况下会对进程以及用户所打开的文件句柄数量进行限制的,因此在生产环境部署系统之后,需要对 Linux 内核参数做出一些调整,来让系统达到比较好的性能

就比如对于 Kafka 来说,如果不优化 Linux 内核参数的话,就会导致 Kafka 无法创建足够多的线程运行

这篇关于【MySQL进阶之路】生产案例:数据库无法连接,Too many connections的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/701279

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

MySQL中VARCHAR和TEXT的区别小结

《MySQL中VARCHAR和TEXT的区别小结》MySQL中VARCHAR和TEXT用于存储字符串,VARCHAR可变长度存储在行内,适合短文本;TEXT存储在溢出页,适合大文本,下面就来具体的了解... 目录一、VARCHAR 和 TEXT 基本介绍1. VARCHAR2. TEXT二、VARCHAR

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

MySQL之搜索引擎使用解读

《MySQL之搜索引擎使用解读》MySQL存储引擎是数据存储和管理的核心组件,不同引擎(如InnoDB、MyISAM)采用不同机制,InnoDB支持事务与行锁,适合高并发场景;MyISAM不支持事务,... 目录mysql的存储引擎是什么MySQL存储引擎的功能MySQL的存储引擎的分类查看存储引擎1.命令

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二