首页 > 代码库 > 记录一次Linux操作系统最大文件数限制的解决过程
记录一次Linux操作系统最大文件数限制的解决过程
在前面的文章中之前遇到过There is insufficient memory for the Java Runtime Environment to continue问题,无法连接上服务器。(http://blog.csdn.net/xifeijian/article/details/38326281),当时的解决方案是通过加大linux最大文件句柄数,问题暂时得到了解决。
可是在后来的工作中仍然遇到服务器连接不上的情况,之前一直怀疑是该服务器上性能测试脚本导致占据大量句柄。
奇怪的问题是:通过xshell使用openpf用户连接Linux服务器时,首先是建立连接established,然后服务端主动close掉连接。
但是,通过root帐号可以连接上服务器。
一、首先,尝试su openpf,系统提示该帐号资源已完全用尽,所以无法切换到该帐号。
然后排查各种脚本,是否存在可疑的占据句柄不释放的情况,未果。
二、既然查看该帐号资源耗尽,那么通过lsof -u openpf >test,显示该帐号下打开的文件句柄,发现大量TT相关异常。从下面截图中已经很明确异常原因是因为checkTT.sh脚本引起。
三、分析checkTT.sh脚本内容,该脚本内容主要用来监听ttserver是否启动,在crontab中描述为* * * * *不间断的执行,而由于ttserver在服务器改造过程中修改了启动端口,所以该监听脚本产生大量未执行完毕的句柄。
四、关闭该进程打开的异常句柄,cat test |grep checkTT |awk ‘{print $2}‘ |xargs kill,然后su openpf切换帐号,终于恢复正常。
另外,对于ulimit,file-max,file-nr,推荐一篇文章。http://www.jsxubar.info/linux文件打开数.html
记录一次Linux操作系统最大文件数限制的解决过程