全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
问题描述:查看tomcat的错误日志发现报错信息如下:.SocketException: Too many open files问题分析:导致 Too many open files ,网络请求过多是一种可能,但也有可能是程序上的缺陷,如没有释放一些文件句柄,程序open了文件却忘记了在最后close。分析可能是 Linux系统允许打开的文件太少导致的。在出现Too many open files问题后,首先得找出主要原因。最大的可能是打开的文件或是socket没有正常关闭。为了定位问题是否由Java进程引起,通过Java进程号查看当前进程占用文件描述符情况:lsof-p$java_pid每个文件描述符的具体属性lsof-p$java_pid|wc-l当前Java进程filedescriptortable中FD的总量分析命令的结果,可判断问题是否由非正常释放资源所引起。文件系统最大可打开文件数rootlxadmin nginx# cat /proc/sys/fs/file-max8192程序限制只能打开1024个文件guwenmail logs$ ulimit -n1024解决问题:临时修改 # ulimit -n 65535长久修改 需要修改/ect/security/limits.conf在行尾加入 * - nofile 65536* - nproc 65536回答一、rootlxadmin nginx# cat /proc/sys/fs/file-max8192文件系统最大可打开文件数rootlxadmin nginx# ulimit -n1024程序限制只能打开1024个文件使用rootlxadmin nginx# ulimit -n 8192调整一下或者永久调整打开文件数 可在启动文件/etc/rc.d/rc.local末尾添加(在/etc/sysctl.conf末尾添加fs.file-max=xxx无效)ulimit -n 8192回答二、Linux内核有时会报告“Too many open files”,起因是file-max默认值(8096)太小。要解决这个问题,可以root身份执行下列命令(或将它们加入/etc/rcS.d/*下的init脚本。)# echo 65536 /proc/sys/fs/file-max # 适用于2.2和2.4版内核# echo 131072 /proc/sys/fs/inode-max # 仅适用于2.2版内核回答三、办法是修改操作系统的打开文件数量限制,方法如下:1. 按照最大打开文件数量的需求设置系统, 并且通过检查/proc/sys/fs/file-max文件来确认最大打开文件数已经被正确设置。# cat /proc/sys/fs/file-max如果设置值太小, 修改文件/etc/sysctl.conf的变量到合适的值。 这样会在每次重启之后生效。 如果设置值够大,跳过下步。# echo 2048 /proc/sys/fs/file-max编辑文件/etc/sysctl.conf,插入下行。fs.file-max = 81922. 在/etc/security/limits.conf文件中设置最大打开文件数, 下面是一行提示:#添加如下这行。* - nofile 8192这行设置了每个用户的默认打开文件数为2048。 注意nofile项有两个可能的限制措施。就是项下的hard和soft。 要使修改过得最大打开文件数生效,必须对这两种限制进行设定。 如果使用-字符设定, 则hard和soft设定会同时被设定。硬限制表明soft限制中所能设定的最大值。 soft限制指的是当前系统生效的设置值。 hard限制值可以被普通用户降低。但是不能增加。 soft限制不能设置的比hard限制更高。 只有root用户才能够增加hard限制值。当增加文件限制描述,可以简单的把当前值双倍。 例子如下, 如果你要提高默认值1024, 最好提高到2048, 如果还要继续增加, 就需要设置成4096。另外一种情况是在创建索引的时候,也有两种可能,一种是 合并因子太小,导致创建文件数量超过操作系统限制,这时可以修改合并因子,也可以修改操作系统的打开文件数限制;另外一种是合并因子受虚拟机内存的限制,无法调整到更大,而 需要索引的doc 数量又非常的大,这个时候就只能通过修改操作系统的打开文件数限制来解决了。在此基础上,我还修改了以下一个配置文件vi /etc/sysctl.conf添加:# Decrease the time default value for tcp_fin_timeout connectionnet.ipv4.tcp_fin_timeout = 30# Decrease the time default value for tcp_keepalive_time connectionnet.ipv4.tcp_keepalive_time = 1800# Turn off tcp_window_scalingnet.ipv4.tcp_window_scaling = 0# Turn off the tcp_sacknet.ipv4.tcp_sack = 0#Turn off tcp_timestampsnet.ipv4.tcp_timestamps = 0然后 service network restart,这些都和TCP sockets有关的优化。另外需要在 /etc/rc.d/rc.local里添加已使得重启的时候生效。echo 30/proc/sys/net/ipv4/tcp_fin_timeoutecho 1800/proc/sys/net/ipv4/tcp_keepalive_timeecho 0/proc/sys/net/ipv4/tcp_window_scalingecho 0/proc/sys/net/ipv4/tcp_sackecho 0/proc/sys/net/ipv4/tcp_timestamps因为不是所有的程序都在root下跑的,所有linux有对hard 与soft open files 的区分,普通用户受hard的限制,无论ulimit -n $数值调到多高,都跑不到 /etc/security/limits.conf里nofile的值.这样的优化后 lsof -p $java_pid|wc -l可以跑到4千以上都不会抛出too many open files。详解Too many open files运行在Linux系统上的Java程序可能会出现Too many open files的异常情况,且常见于高并发访问文件系统,多线程网络连接等场景。程序经常访问的文件、socket在Linux中都是文件file,系统需要记录每个当前访问file的name、location、access authority等相关信息,这样的一个实体被称为file entry。“open files table”(图中橙色标识)存储这些file entry,以数组的形式线性管理。文件描述符(file descriptor)作为进程到open files table的指针,也就是open files table的下标索引,将每个进程与它所访问的文件关联起来了。每个进程中都有一个file descriptor table管理当前进程所访问(open or create)的所有文件,文件描述符关联着open files table中文件的file entry。细节不表,对于open files table能容纳多少file entry。Linux系统配置open files table的文件限制,如果超过配置值,就会拒绝其它文件操作的请求,并抛出Too many open files异常。这种限制有系统级和用户级之分。系统级:系统级设置对所有用户有效。可通过两种方式查看系统最大文件限制1 cat /proc/sys/fs/file-max2 sysctl -a 查看结果中fs.file-max这项的配置数量如果需要增加配置数量就修改/etc/sysctl.conf文件,配置fs.file-max属性,如果属性不存在就添加。配置完成后使用sysctl -p来通知系统启用这项配置用户级:Linux限制每个登录用户的可连接文件数。可通过 ulimit -n来查看当前有效设置。如果想修改这个值就使用 ulimit -n 命令。对于文件描述符增加的比例,资料推荐是以2的幂次为参考。如当前文件描述符数量是1024,可增加到2048,如果不够,可设置到4096,依此类推。在出现Too many open files问题后,首先得找出主要原因。最大的可能是打开的文件或是socket没有正常关闭。为了定位问题是否由Java进程引起,通过Java进程号查看当前进程占用文件描述符情况:Java代码 lsof -p $java_pid 每个文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纵隔肿物鉴别诊断与护理知识
- 高中数学 加练 专题5 第45练 平面向量基本定理及运算
- 高中物理 加强练习第七章 74.“子弹打木块”模型
- 初一下册数学 讲义 第06讲 三元一次方程组 教案讲义及练习(学生版)
- 新版部编人教版四年级上册道德与法治(课件)3协商决定班级事务
- 维保合同范本
- 配电箱制作及安装合同
- 暖水管开洞施工方案(3篇)
- 水中钢平台施工方案(3篇)
- 沥青油层防水施工方案(3篇)
- 2026年安康紫阳县直及县城周边学校遴选教师(81人)考试模拟试题及答案详解
- 2025年中国真空阀门设备市场调查研究报告
- 2026有色金属期货价格预测机器学习模型构建分析
- (2025年)正阳县纪委遴选笔试试题及答案
- 卫生院应急演练制度
- 2026贵州能源集团有限公司第一批综合管理岗招聘41人考试历年真题汇编附答案解析
- 2025年电动自行车充电桩布局项目可行性研究报告及总结分析
- 2025年福建省法官逐级遴选考试题及答案
- 2024年聊城阳谷县卫生健康系统招聘真题
- 全科医学病案分析报告
- 漆雾凝聚剂技术方案
评论
0/150
提交评论