mysql 系统用户最大文件打开数限制

简介: mysql 系统用户最大文件打开数限制 纸上得来终觉浅,绝知此事多宕机...记录一下自己很蠢的一次故障处理过程。   上周的时候,一个刚上线的系统又开始反映登不上了,因为最近这个系统也老是出现这个问题,开发也一直在找问题中,所以也没太在意。
+关注继续查看

mysql 系统用户最大文件打开数限制

纸上得来终觉浅,绝知此事多宕机...记录一下自己很蠢的一次故障处理过程。

  上周的时候,一个刚上线的系统又开始反映登不上了,因为最近这个系统也老是出现这个问题,开发也一直在找问题中,所以也没太在意。于是登上操作系统,mysql -uroot -p登录数据库,然后就一直没反应,登不上...

  交代一下,mysql是装在mysql用户下的,装的时候虽然对数据库参数有进行调优,但是操作系统层面没做调整,所以mysql用户的最大文件打开数限制为默认的1024,用ulimit -n可以查询。然后我在用mysql的root账号登录数据库的时候也是在mysql这个系统用户下登录的,然后看了下当时服务器的负载,cpu和内存这些都很正常,但是存在大量应用到数据库的连接。

  到这儿问题应该就很清楚了,系统用户mysql文件打开数可能达到了最大限制,当然不能打开更多的连接。

  然而当时我并没有想到这一点,我想到的不是换个系统用户登录,不是停掉应用,而是重启数据库。。。而且这个数据库跑的不只这一个业务,虽然也都不是什么重要的业务。。。

  于是我就准备重启数据库,仍然是在mysql用户下执行mysqladmin -uroot -p shutdown。毫无疑问,这肯定也是没有反应的,道理跟前面root账号连不上数据库是一样的,ctrl+C后有以下报错

^Cmysqladmin: connect to server at 'localhost' failed
error: 'Lost connection to MySQL server at 'waiting for initial communication packet', system error: 4'

  然后我就做了个更蠢的操作,虽然想着可能会丢数据,杀掉了mysql进程。。。然后重启mysql,系统也就可用了。是真的很蠢,做完之后马上就想起有多种更好的处理方法,却选择了最蠢的一种。

  今天再登上数据库看的时候,发现有几个参数跟我配置文件里写的不一样,比如max_connections、table_open_cache等,都是设置的默认值,看了下上次启动日志,确实也有告警

2019-03-15T08:14:03.038750Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 12010)
2019-03-15T08:14:03.038911Z 0 [Warning] Changed limits: max_connections: 214 (requested 2000)
2019-03-15T08:14:03.038916Z 0 [Warning] Changed limits: table_open_cache: 400 (requested 5000)

  很明显,mysql根据参数设置计算了实例需要打开的最大文件数超过了当前系统用户的最大限制,于是没有使用该参数而使用了默认值。当然启动起来数据库也是可用的,启起来后也可以手动把设置参数

set global max_connections=2000;
set global table_open_cache=5000;

  只不过就很有可能出现我之前出现的问题了,也就是数据库连接数并没有达到max_connections的限制,用户仍然连接不上。需要说明的是,正常情况下就算连接数满了,mysql仍然会为root用户保留一个连接,也就是root用户是可以登录数据库查看问题的。

  要解决也很简单,增大操作系统用户mysql的限制值就行了,在配置文件/etc/security/limits.conf后面加上新的限制值就行了。

mysql   soft    nofile  32768
mysql   hard    nofile  65535
原文地址https://www.cnblogs.com/yy-7777/p/10552701.html
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
关系型数据库 MySQL Linux
百度搜索:蓝易云【Linux系统MySQL数据库性能优化详细教程。】
请注意,MySQL性能优化是一个复杂的过程,需要根据具体的环境和应用进行调整。建议在进行任何更改之前,备份数据库并测试性能影响。希望这个教程对您有所帮助。如有任何疑问,请随时提问。
155 0
|
9天前
|
Ubuntu 安全 关系型数据库
百度搜索:蓝易云【Ubuntu 18.04系统编译安装MySQL 5.7教程。】
现在,您已经成功地在Ubuntu 18.04上编译和安装了MySQL 5.7。请注意,这只是基本的安装过程,您可能需要进一步配置和保护您的MySQL实例。确保在实际操作中根据您的需求进行适当的配置和调整,并设置安全的密码策略。
63 0
|
11天前
|
关系型数据库 MySQL Java
RDS MySQL高并发访问下的系统稳定性
RDS MySQL支持线程池管理,只需要少量线程完成活跃会话的任务即可,避免突发流量导致的业务稳定性问题。
55 0
|
12天前
|
弹性计算 关系型数据库 数据库
基于ECS+RDS的在线留言系统
通过该实验掌握ECS和RDS的常见操作,并能理解动态网站的交互原理,以及基本的数据库安全机制,实验中创建的留言板可以在公网被任何人访问,后台数据仅允许被授权的管理员访问。
39 0
|
15天前
|
数据安全/隐私保护
基于SpringBoot+Vue+Java+Mysql 的简历招聘系统【源码】下
基于SpringBoot+Vue+Java+Mysql 的简历招聘系统【源码】
|
15天前
|
数据库
基于SpringBoot+Vue+Java+Mysql 的简历招聘系统【源码】中
基于SpringBoot+Vue+Java+Mysql 的简历招聘系统【源码】
|
15天前
|
存储 安全 Java
基于SpringBoot+Vue+Java+Mysql 的简历招聘系统【源码】上
基于SpringBoot+Vue+Java+Mysql 的简历招聘系统【源码】
|
15天前
|
数据安全/隐私保护
基于SpringBoot+Vue+Mysql+Java 毕业生信息招聘平台系统(附源码)下
基于SpringBoot+Vue+Mysql+Java 毕业生信息招聘平台系统(附源码)
|
15天前
|
数据库
基于SpringBoot+Vue+Mysql+Java 毕业生信息招聘平台系统(附源码)中
基于SpringBoot+Vue+Mysql+Java 毕业生信息招聘平台系统(附源码)
|
15天前
|
安全 关系型数据库 MySQL
基于SpringBoot+Vue+Mysql+Java 毕业生信息招聘平台系统(附源码)上
基于SpringBoot+Vue+Mysql+Java 毕业生信息招聘平台系统(附源码)
推荐文章
更多