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 系统用户最大文件打开数限制
纸上得来终觉浅,绝知此事多宕机...记录一下自己很蠢的一次故障处理过程. 上周的时候,一个刚上线的系统又开始反映登不上了,因为最近这个系统也老是出现这个问题,开发也一直在找问题中,所以也没太在意.于是 ...
随机推荐
- 一个数组中两个数的和为N,找出这两个数字的下标
分析,两个数字的和为N.那么这两个数字是否是唯一的呢?输出的下标是否是第一对出现的呢? 1,我们假设这两个数字是唯一的 和是唯一的,那么其中一个数字越大,另一个数字就越小.想到大小关系,我们就想到了排 ...
- 【转】关于高可用负载均衡的探索-基于Rancher和Traefic
原文链接:http://www.dwz.cn/7F4r2T 原创 2018-03-23 张新峰 RancherLabs 本文于3月22日晚由张新峰,杭州爱医康架构师技术分享整理而成.本次分享介绍了如何 ...
- LeetCode--038--报数(java)
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 被读作 "one 1" ...
- python画箱线图
# -*- coding: utf-8 -*- """ Created on Wed Jun 14 13:00:11 2017 @author: Miao "& ...
- .Net Core2.1 部署到IIS
1. 发布网站,和.net framework MVC一样 2.安装WindowsHosting和.Net Core SDK 下载地址:https://www.microsoft.com/net/do ...
- nltk中的三元词组,二元词组
在做英文文本处理时,常常会遇到这样的情况,需要我们提取出里面的词组进行主题抽取,尤其是具有行业特色的,比如金融年报等.其中主要进行的是进行双连词和三连词的抽取,那如何进行双连词和三连词的抽取呢?这是本 ...
- Aop理解 ioc理解
AOP 把 [核心代码]和[非核心代码]分离 提高开发的效率 java设计模式: https://www.cnblogs.com/malihe/p/6891920.html N+1就是: 1:一条查询 ...
- RAID的详细配置
一.RAID 1.RAID机制通过使用多硬盘并行工作的方式来提高硬盘的IO性能 2.RAID分为多种,称之为RAID level,RAID共有7级:RAID0~RAID6 3.常用的RAID级别有:R ...
- C#Mvc地址栏传值
A页面 location.href = "/Home/Bpage?names=" +names; B页面 var loc = location.href;var n1 = loc. ...
- vs11 微软下载地址
https://www.microsoft.com/en-us/download/details.aspx?id=30679 vs11 微软的官方下载.最安全