MySQL Error--打开过多文件导致数据库无法连接
【此文抄自同事的邮件,当作笔记学习】
环境描述
Mysql 5.5.21
OS centos 5.8
zabbix agent 2.4.3
情况描述
现象数据库处于运行状态,但是无法创建新的连接,监控报警数据库无法连接,连接不上MySQL,一直处于等待状态。
Mysql的error日志报错:
- [ERROR] /usr/sbin/mysqld: Can't find file: './wukong_customs/wukong_task_info.frm' (errno: 23)
- [ERROR] Error in accept: Too many open files in system
Mysqld进程打开的文件句柄数:
lsof(list open files)是一个列出当前系统打开文件的工具。
- [root@db11149 ~]# lsof -p | wc -l
没有超过MySQL设置的限值。
查看操作系统的日志:
- localhost kernel: VFS: file-max limit reached
- localhostnrpe[]: Network server accept failure (: Too many open files in system)
日志显示操作系统的连接数已经达到了最大值65535了,但是服务器上运行的业务应用只有数据库服务,而mysql打开的文件句柄数不到5000个。因此推断是有哪个正在运行的服务打开的句柄数过多导致的。
显示shell中的资源限制:
ulimit命令修改的数值只对当前登录用户的目前使用环境有效(只对当前会话有效),系统重启或者用户退出后就会失效.
- [root@db11149 ~]# ulimit -a
- core file size (blocks, -c)
- dataseg size (kbytes, -d) unlimited
- scheduling priority (-e)
- file size (blocks, -f) unlimited
- pending signals (-i)
- max locked memory (kbytes, -l)
- max memory size (kbytes, -m) unlimited
- open files (-n)
- pipe size ( bytes, -p)
- POSIX message queues (bytes, -q)
- real-time priority (-r)
- stack size (kbytes, -s)
- cpu time (seconds, -t) unlimited
- max user processes (-u)
- virtual memory (kbytes, -v) unlimited
- file locks (-x) unlimited
对所有会话永久生效,修改limits.conf:
- [root@db11149 ~]# cat /etc/security/limits.conf | tail -
- # End of file
- * soft nofile
- * hard nofile
这个当中的硬限制是实际的限制,而软限制,是warnning限制,只会做出warning.其实ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软
默认显示的是软限制,如果运行ulimit命令修改的时候没有加上的话,就是两个参数一起改变.
查看目前运行的所有进程打开的句柄数:
- # fori in `ps -ef| egrep -v 'UID PID PPID' | awk '{print $2}'` ; do echo "pid=$i, open_files=`lsof -p $i | wc -l`" >> ;done
- pid=, open_files=
- pid=, open_files=
- pid=, open_files=
- pid=, open_files=
- pid=, open_files=
- pid=, open_files=
- pid=, open_files=
- pid=, open_files=
- pid=, open_files=
- pid=, open_files=
- #for i in `ps -ef| egrep -v 'UID PID PPID' | awk '{print $2}'` ; do echo "open_files=`lsof -p $i | wc -l` &&& whole=`ps -ef | awk '{if($2=="'"$i"'"){print $0}}'`" ;done
查看打开句柄数最多的进程:
确定是zabbix进程打开的
- [root@db11149 ~]# ps -ef | grep zabbix
- root Jul27 ? :: zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
- root Jul27 ? :: zabbix_agentd: collector [idle sec]
- root Jul27 ? :: zabbix_agentd: listener # [waiting for connection]
- root Jul27 ? :: zabbix_agentd: listener # [waiting for connection]
- root Jul27 ? :: zabbix_agentd: listener # [waiting for connection]
- root Jul27 ? :: zabbix_agentd: listener # [waiting for connection]
- root Jul27 ? :: zabbix_agentd: listener # [waiting for connection]
- root Jul27 ? :: zabbix_agentd: listener # [waiting for connection]
- root Jul27 ? :: zabbix_agentd: listener # [waiting for connection]
- root Jul27 ? :: zabbix_agentd: listener # [waiting for connection]
产生原因
重启zabbix agent后,打开的文件被释放。
https://support.zabbix.com/browse/ZBX-9251
由此确定是由于zabbix agent的异常导致的。
如何处理
查找zabbix的资料后确定是zabbix agent的BUG,目前在zabbix agent 2.4.3和2.4.4版本中发现了这个BUG,在2.2和2.5版本中已经修复了。
然后更新zabbix agent的版本。
MySQL Error--打开过多文件导致数据库无法连接的更多相关文章
- mysql逗逼的.frm文件恢复数据库
mysql数据库用.frm文件进行恢复. 背景:mac系统 .frm文件 (1)打开终端:输入cd /usr/local 回车. (2)输入 ls 回车. 这时候 打开finder ---> ...
- mysql导入导出sql文件(包括数据库和数据表的操作)
废话不多说直接开始. 在windows命令行下登录mysql,创建一个test_01数据库,创建一个user表,并插入一条数据,如下 一.导出数据库test_01 1.退出数据库,在命令行中输入 my ...
- ShellExecuteEX打开iqy文件导致excel hang的原因分析
1. 问题 当在console中调用API ShellExecuteEx打开"test.iqy"文件时,发现excel会hang住,console退出后excel才会响应,但直接双 ...
- Java分别与MySQL、Oracle、SQL Server数据库建立连接
1.与MySQL连接 jar包下载地址: Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动(MySQL的jar包) String u ...
- Tomcat9.0.13 Bug引发的java.io.IOException:(打开的文件过多 Too many open files)导致服务假死
问题背景: 笔者所在的项目组最近把生产环境Tomcat迁移到Linux,算是顺利运行了一段时间,最近一个低概率密度的(too many open files)问题导致服务假死并停止响应客户端客户端请求 ...
- MySQL Error Log 文件丢失导致The server quit without updating PID file启动失败的场景
今天在做mysql sniff测试的时候,中间重启MySQL实例的过程中,出现了"The server quit without updating PID file"这个经典的错误 ...
- 网络编程中TCP基础巩固以及Linux打开的文件过多文件句柄的总结
1.TCP连接(短链接和长连接) 什么是TCP连接?TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. 当网络通信 ...
- 【原创】大叔问题定位分享(5)Kafka客户端报错SocketException: Too many open files 打开的文件过多
kafka0.8.1 一 问题 10月22号应用系统忽然报错: [2014/12/22 11:52:32.738]java.net.SocketException: 打开的文件过多 [2014/12/ ...
- mysql 系统用户最大文件打开数限制
纸上得来终觉浅,绝知此事多宕机...记录一下自己很蠢的一次故障处理过程. 上周的时候,一个刚上线的系统又开始反映登不上了,因为最近这个系统也老是出现这个问题,开发也一直在找问题中,所以也没太在意.于是 ...
随机推荐
- FastAdmin笔记~
在phpstud命令行输入以下命令! 1.在命令行一键生成test表格的crud php think crud -t test 2.在数据库创建表必须加上表注释 3.生成test控制器的权限菜单 p ...
- 近期Freecodecamp问题总结
最近没什么事,刷了freecodecamp的算法题,发现了自己基础的薄弱 1 where are thou 写一个 function,它遍历一个对象数组(第一个参数)并返回一个包含相匹配的属性-值对( ...
- Pandas 基础(12) - Stack 和 Unstack
这节的主题是 stack 和 unstack, 我目前还不知道专业领域是怎么翻译的, 我自己理解的意思就是"组成堆"和"解除堆". 其实, 也是对数据格式的一种 ...
- Roslyn
Roslyn 是以 API 为驱动的下一代编译器,集成在最新版的 Visual Studio 上.它开放 C# 和 Visual Basic 编译器的 API,使得开发者可以借助编译器进行解析代码文件 ...
- bzoj 5068: 友好的生物
大意: n个生物, 每个生物有k种属性, 友好度通过下式计算. , C为给定非负数组, 求友好度最大值. k比较小, 求的是最大值并且$C_i$非负, 所以可以暴力枚举正负情况去绝对值号. #incl ...
- 若依项目整合eCharts实现图表统计功能
eCharts是一款强大的图表统计工具,具体介绍可查看其官网 http://echarts.baidu.com/echarts2/index.html 下面记录一下如何在若依项目中使用eCharts. ...
- zzw原创_解决Could not chdir to home directory /test/bdctool: Permission denied一例
1.用命令新建一用户 adduser -d /test/bdctool -m bdctool 2.用新用户登录,报错:Could not chdir to home directory /test/ ...
- Eclipse+Maven+Scala Project+Spark | 编译并打包wordcount程序
学习用Eclipse+Maven来构建并打包一个简单的单词统计的例程. 本项目源码已托管于Github –>[Spark-wordcount] 第一步 在EclipseIDE中安装Scala插件 ...
- easyui 如何为标签动态追加属性实现渲染效果
简述一下在项目遇到的问题,这边有一个需求,选择不同类型,加载不同的div标签(其中属性是否必填是区分类型的关键) html界面是这样的 <div class="grid_1 lbl&q ...
- POST形式 soapUI调用WebService的restful接口,传入json参数,并且返回json
第一次使用POST形式传JSON字符串,怎么都调不到后台方法,只是因为注解没加对…… CXF的WebService接口类 package com.zit.webservice.main; import ...