记一次too many open files 异常
“位卑未敢忘忧国,事定犹须待阖棺”
序
这是一次生产事故。更新了代码之后,第二天一早便有客户反馈服务器访问不了。
我从梦中惊醒,开始检查问题。
在查看了日志之后,发现了下面的错误:
java.io.IOException: Too many open files
我在想,是什么文件被打开多次,导致服务器都挂了呢?一直没有头绪,随后百度了一下,从too many open files(打开的文件过多)解决方法这篇文章中找出了问题,原来是我的过滤器在读取配置文件。
问题分析
因为项目设置ip过滤,几台服务器中好几个节点的ip和端口都要写到过滤器中。于是,我把这些ip写到了一个配置文件中,然后再过滤的方法doFilter()
中来读取该配置文件的ip。所以,问题来了,只要项目任何的一个路径被访问,都要进入过滤器,然后读取配置文件判断ip,当用户和操作多的时候,配置文件就被打开的次数太多了。于是,就出现了上面的问题。
就是这句代码惹的祸。
问题解决
既然这句代码写在doFilter
中会导致文件被读取太多次从而引起错误,那么,可以把这个文件的读取写init
方法中。这样,只是在项目启动的时候被读取一次,然后定义一个全局变量存起来就OK了。这样就可以在doFilter
中使用全局变量来拿到需要过滤的ip了。
引以为戒!
记一次too many open files 异常相关推荐
- 记一次线程池任务执行异常
记一次线程池任务执行异常 参考文章: (1)记一次线程池任务执行异常 (2)https://www.cnblogs.com/hapjin/p/10012435.html (3)https://www. ...
- 记一次 .NET 某教育系统 异常崩溃分析
一:背景 1. 讲故事 这篇文章起源于 搬砖队大佬 的精彩文章 WinDBg定位asp.net mvc项目异常崩溃源码位置 ,写的非常好,不过美中不足的是通览全文之后,总觉得有那么一点不过瘾,就是没有 ...
- android studio unable to save settings,记一些:Android Studio 安装-运行 异常及解决
事故时间:2018.9.7 - 2019.2.11 事故版本:3.1 - 3.3 事故现场 安装 1. Proxy - sdk 运行 2. Proxy - Settings 3. Http/1.1 4 ...
- 记一次mariadb 安装 出现scok异常
当安装数据库Maria时,使用yum install mariadb*. systemctl start mariadb 会提示 /var/lib/mysql 目录已经初始化了, 但是当后面用到的时候 ...
- 项目异常Too many open files
记一次Too many open files 错误日志 现象 解决过程 解决过程A 解决过程B 错误日志 现象 错误出现后,系统外部无法正常访问,系统内部服务未发生特殊其他异常.内存占用过高为正常的4 ...
- 妖神记服务器维护中,妖神记手游进不去 进不去网络异常怎么办?[多图]
类型:角色扮演 大小:901.88MB 评分:10 平台: 妖神记手游最近有不少玩家反映进不去游戏,还有时候会碰到网络异常,这时候要怎么解决呢?下面是友情MT为大家带来的妖神记手游进不去网络异常解决方 ...
- Too many open files
环境: 192.168.128.111(ha1.haproxy.org) -> CentOS 6.3 64bit siege 2.78 192.168.128.10(n1.web.org) -& ...
- linux 打开文件错误 too many open files 解决 ulimit 简介
Too many open files是Java常见的异常,通常是由于系统配置不当或程序打开过多文件导致.这个问题常常又与ulimit的使用相关.关于ulimit的用法有不少坑,本文将遇到的坑予以梳理 ...
- android Too many open files 解决
遍历某一文件夹,当文件数过多时,或出现Too many open files异常,有问题的代码 /*** 获取指定文件大小** @param file* @return* @throws Except ...
最新文章
- 快速排序(Quick_Sort)
- 机房内综合布线电缆的紧密捆绑有哪些问题?
- 2019牛客多校第四场 B xor (线性基求交)
- eclipse占用内存过大_idea被评最好用java开发工具,为什么用eclipse的人更多?
- 【 Grey Hack 】综合工具 shellOs
- idea 不打开文件提示错误_IDEA无法正常启动(打不开报错)
- [C++] - 闭包(closure)
- NUC1399 Sum It Up【DFS】
- 数据治理是开展数据分析的前提
- 浪潮服务器怎么获取cpu信息,浪潮获取cpu、内存、硬盘等信息(redfish协议+restfull协议)...
- DRG/DIP改革激活医疗数据智能400亿新增市场| 爱分析洞见
- 2021年烷基化工艺找解析及烷基化工艺考试试卷
- 3w最简单led灯电路图_怎么选择自己合适的LED驱动IC?(十大LED驱动IC典型应用电路图)...
- Mining Hero於ETHDenver峰會提交專案,整合IPFS應用場景
- [SYZOJ279]滑♂稽♂树
- mumu按键精灵_魂器学院,新手做的按键精灵脚本,基本每天的日常任务可做,mumu模拟器的...
- artemis mq配置开机启动 (centos7)(artemis Init Script)
- substr()函数
- 北京师范大学计算机研究生毕业去向,北京师范大学的计算机科研实力怎么样啊?我想考北..._考研_帮考网...
- Unity3d使用鼠标点击控制人物走动无效的问题
热门文章
- 百度又一神器发布!网友:牛逼炸了...
- MySQL (4) 第一范式 第二范式 第三范式 BC范式
- FFmpeg命令行解析
- 关于Python虚拟环境与包管理你应该知道的事
- 微信网页图片预览问题
- minMaxLoc用法
- modprobe XXX not found 解决与Depmod命令; insmod/modprobe的区别
- 关于nn.ReLU(inplace=True)和nn.ReLU(inplace=False)的区别
- JAVA基础总结----JAVA面试必备
- [传感器][算法][python]根据IMU九轴加速度传感器数据序列,判断是否有触碰或翻转