MySQL Too Many Connections

news2024/11/27 6:27:07

一、前言

上一篇 《磁盘爆了》  我们讲磁盘撑爆造成Java应用无法启动,今天我们来讲一下MySQL连接被撑爆应用启动后连不上数据库的问题。

二、max_connections配置

我们自己安装的开源MySQL5.6 默认的max_connections(最大连接数)值为151,为什么是151咱也搞不清楚,以前版本好像是100,阿里云或亚马逊RDS max_connections是根据你购买不同型号机器而不同,从600到几万都有,自己安装的MySQL最大连接数配置其实可以参考阿里云的配置,如下图:

在MySQL中查看max_connections设置的值,使用命令show variables like "max_connections";

  • 临时设置:调整max_connections的值,在MySQL命令行中执行后可以立即生效,但MySQL服务器重启后会被恢复成默认的设置。

    set global max_connections=1000;

  • 永久设置:在/etc/my.cnf 的[mysqld]下面添加设置代码,然后重启就可以了

那是否这里想设置多少都可以呢,这肯定也是不行的,一方面与机器CPU、内存有关,另一方面与LInux、MySQL文件句柄数都有关系。

三、Linux文件句柄数

Linux文件句柄数限制分为内核句柄数限制与用户句柄数限制。

  • 内核句柄数

    查看内核句柄数限制  cat /proc/sys/fs/file-max,不同机器这个值不一样。

    修改内核句柄数限制  vi /etc/sysctl.conf  fs.file-max=655350,修改后需要重启系统。

  • 用户句柄数

    查看用户句柄数限制  ulimit -n  ,它规定了单个进程可以打开最大文件句柄数,Socket连接数也算在内

    修改用户句柄数限制:vi /etc/security/limits.conf

        * soft nofile 65535

           * hard nofile 65535   修改后同样需要重新系统。

查看某个进程最大句柄数限制和当前打开的句柄数,下图是我一台测试机查看的数据。

四、MySQL的open_files_limit

命令 show variables  like 'open_files_limit';可以查看当前MySQL允许打开的文件句柄数,我们在设置max_connections最大连接数时不能超过 open_files_limit的值,因为 open_files_limit除了包含Socket连接还包含打开的文件数(数据库表文件等,如下图),如果max_connections大于open_files_limit MySQL是无法启动的。

设置MySQL最大句柄数

vim /usr/lib/systemd/system/mysqld.service 

加入LimitNOFILE=1024,即可设置open_files_limit的大小。

五、一个小实验

将max_connectrions的值设置为【2】个,重启MySQL,然后写一个Python脚本启动10个线程连接数据库查询数据,目的就是为了撑爆连接数,代码如下,注:本来想用Go的协程写这段代码,但Go连接数据库还没有玩过,短时间内写不出来,就用Python搞搞了。

然后用show processlist查看数据可以看到有【3】连接,其中有一个连接是预留给超级用户连接使用。

Python脚本执行后,除了两个线程查询返回数据,其它线程都报

pymysql.err.OperationalError: (1040, 'ny connections')错误,1040错误即连接数超过了MySQL设置的最大连接数。

六、上次测试环境产生 Too Many Connections原因

1、测试环境MySQL是自己搭建的,默认max_connections为151

2、测试环境Java应用都是使用连接池,每个应用启动后就会创建几十个连接,我们有多个应用启动,然后开发人员开发机启动调试,加起来连接数很容易就超过了151的值,设置一下/etc/my.conf中max_connections即可解决。

3、突然想起来以前和php程序员聊天的时候,说php不需要连接池,因为php一个请求对应一个进程,请示结束进程也结束,它不存在多线程竟争的问题,所以可以用一个常驻进程对应一个数据库连接来避免重复连接造成的开销(php没玩过不太了解,不确定对不对),而Java是单进程多线程架构,依赖于数据库连接池来减少频繁建立连接的开销。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1173040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MongoDB】索引 - 数组字段的多键索引

数组字段创建索引时,MongoDB会为数组中的每个元素创建索引键(多键索引),多键索引支持数组字段的高效查询。 一、准备工作 这里准备一些数据 db.shop.insertMany([{_id: 1, name: "水果店1", fruits: ["apple&qu…

Vue+OpenLayers从入门到实战进阶案例汇总目录,兼容OpenLayers7和OpenLayers8

本篇作为《VueOpenLayers入门教程》和《VueOpenLayers实战进阶案例》所有文章的二合一汇总目录,方便查找。 本专栏源码是由OpenLayers结合Vue框架编写。 本专栏从Vue搭建脚手架到如何引入OpenLayers依赖的每一步详细新手教程,再到通过各种入门案例和综合…

Go语言与Python语言的性能比较

目录 一、背景与意义 二、执行速度 三、内存消耗 四、并发性能 五、编译速度与开发效率 六、综合考虑 七、应用场景 八、未来发展趋势 总结 一、背景与意义 在编程世界中,Go语言和Python语言都占有一席之地。Go语言是由Google开发的,其设计初衷…

GNSS精密解算软件介绍

GAMIT: 美国麻省理工学院(MIT)和加州大学圣地亚哥分校的海洋研究所(SIO)开发的GAMIT/GLOBK软件, GAMIT为双差网解,利用双差直接消除卫星及测站的时间误差。 gamit软件介绍-周命端:…

Technology strategy Pattern 学习笔记4 - Creating the Strategy-Corporate Context

Creating the Strategy-Corporate Context 1 •. Stakeholder Alignment 1.1 要成功,要尽可能获得powerful leader的支持 1.2 也需要获得最高执行层的支持 1.3 Determining(确定) Stakeholders 需要建立360度组织图,确认三类人…

unity中移动方案--物理渲染分层

一、三种基本移动方案 unity中的移动分为Transform和Rigidbody以及CharacterController,其中CharacterController已经考虑了穿墙,贴墙走等情况。 1.使用transform,直接修改位置,无视碰撞 1.transform.position 2.transform.Translate 2.使用…

Paragon NTFS for Mac15.5磁盘存储软件

NTFS For Mac 15是首个支持Mac上读写NTFS外置存储设备解决方案 ,解决mac不能读写外置让您更加简单直观的在Mac机上随意对NTFS文件修改、删除等操作。 NTFS for Mac是什么 在选择一款合适自己的NTFS or Mac软件之前,您可以简单地对NTFS or Mac进行一个了…

(免费领源码)PHP#MySQL高校学生信息管理系统28099-计算机毕业设计项目选题推荐

摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用php技术建设学生信息管理系统设计。…

【兔子王赠书第6期】Python机器学习实战:基于Scikit-learn与PyTorch的神经网络解决方案

文章目录 前言推荐图书写给读者内容简介本书目录本书特色推荐理由 粉丝福利结语 前言 粉丝福利又双叒叕来喽,小伙伴们快来看看吧! 推荐图书 《Python机器学习实战:基于Scikit-learn与PyTorch的神经网络解决方案》 京东直购链接&#xff1…

二维码智慧门牌管理系统升级:一键报错解决三大问题

文章目录 前言一、一键报错功能解决了三大问题二、提高效率和便捷性 前言 随着科技的不断发展,智能化管理已经深入到社会的各个角落,其中二维码智慧门牌管理系统在社区、酒店、写字楼等场所的应用尤为广泛。为了更好地提升管理系统效率和解决实际问题&a…

Linux生成静态库

GCC 什么是GCC GCC 是 GNU 编译器集合(GNU Compiler Collection)的缩写。它是一个开源的编程语言编译器,支持多种编程语言,包括 C、C、Objective-C、Fortran、Ada 和 Go 等。GCC 最初由理查德斯托曼(Richard Stallman…

VEX —— Quaternion|Euler Angle

目录 一,四元数相关概念 四元数 欧拉角 常用四元数相关函数 相互转换 二,案例 案例:沿面中心翻转 案例:路径导弹 一,四元数相关概念 四元数 在vex内四元数为((x,y&#xff0…

vmware--主机win11 samba 映射虚拟机ubuntu共享文件夹

参考链接 1.效果如下图 2.教程 2.1 win11开启 smb 忽略… 2.2 vmware–ubuntu 安装 samba sudo apt update sudo apt install samba2.3 vmware–ubuntu 验证 安装成功 ppan:~$ whereis samba samba: /usr/sbin/samba /usr/lib/x86_64-linux-gnu/samba /etc/samba /usr/sh…

《向量数据库指南》——用了解向量数据库Milvus Cloud搭建高效推荐系统

了解向量数据库 ANN 搜索是关系型数据库无法提供的功能。关系型数据库只能用于处理具有预定义结构、可直接比较值的表格型数据。因此,关系数据库索引也是基于这一点来比较数据。但是 Embedding 向量无法通过这种方式直接相互比较。因为我们不知道向量中的每个值代表什么意思,…

【LeetCode:187. 重复的DNA序列 | 滑动窗口 map】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

ssm整合原理与实战

文章目录 前言一、SSM整合原理1.1 什么是SSM整合1.2 SSM整合核心问题1.2.1 第一问:SSM整合需要几个IoC容器?1.2.2 第二问:每个IoC容器对应哪些类型组件?1.2.3 第三问:IoC容器之间关系和调用方向?1.2.4第四问…

CSS画圆以及CSS实现动态圆

CSS画圆以及CSS实现动态圆 1. 先看基础(静态圆)1.1 效果如下:1.2 代码如下: 2. 动态圆2.1 一个动态圆2.1.1 让圆渐变2.1.2 圆渐变8秒后消失2.1.3 转动的圆(单个圆) 2.2 多个动态圆 1. 先看基础(…

LangChain+LLM实战---部署本地大模型(基于Langchain)

原文:Training Your Own LLM using privateGPT 作者:Wei-Meng Lee 了解如何在不向提供者公开私有数据的情况下训练自己的语言模型 使用公共AI服务(如OpenAI的ChatGPT)的主要问题之一是将您的私人数据暴露给提供商的风险。对于商业用途,这仍然…

K8S知识点(三)

(1)环境搭建-环境初始化 Centos的版本是有要求的必须是7.5或以上,否则安装出来的集群是有问题的Node节点可能加入不到集群中来 详细步骤 1.同时连接三台服务器:查看一下版本 是否正确 2.主机名解析,方便节点之间的…

PDF文件解析

一、PDF文件介绍 PDF是英文Portable Document Format缩写,就是可移植的意思,它是以PostScript语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,PostScript咱也不懂,估计和SVG的原理差不多吧…