[已解决]Linux日志Too many open files(打开的文件太多)linux报错:too many open files处理

2019-07-15
0评论
/
2281阅读
爱搜啊

今天服务器异常,查看日志提示“too many open files”也就是打开文件过多,下面是日志

[WARN ] 2018-06-15 16:55:20,831 --New I/O server boss #1 ([id: 0x55007b59, /0.0.0.0:20880])-- [org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink]  [DUBBO] Failed to accept a connection., dubbo version: 2.8.3.2, current host: 127.0.0.1 

java.io.IOException: Too many open files

        at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) ~[na:1.7.0_09-icedtea]

        at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:226) ~[na:1.7.0_09-icedtea]

        at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink$Boss.run(NioServerSocketPipelineSink.java:244) ~[netty-3.2.5.Final.jar:na]

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [na:1.7.0_09-icedtea]

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [na:1.7.0_09-icedtea]

        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_09-icedtea]

too many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。 

怎么解决Too many open files

Too many open files这个问题主要指的是进程企图打开一个文件,或者叫句柄,但是现在进程打开的句柄已经达到了上限,已经无法打开新句柄了。知道原因解决起来就方便了,现在只需要找到这个修改句柄上限的地方就可以了。

但是由于以前没遇到过这个问题,所以并不知道怎么修改句柄上限,没办法只能网上求助了,好在网络是万能的,任何问题都有人遇到过而且大部分都解决了,

解决方法如下,vim打开/etc/security/limits.conf

#vim /etc/security/limits.conf

加入

* nofile 102400

当然也可以设置警告值当打开的句柄到达某一个界限的时候,给出提示

还是使用vim打开/etc/security/limits.conf

vim /etc/security/limits.conf

加入下面两行配置

* soft nofile 2000

* hard nofile 2000

其中hard的设置是实际的默认值,也就是上限,而soft的配置只是用来警告的,如果超过了soft的值,会有warn。

如何查询系统中进程占用的句柄数

使用的命令是:

lsof -n|awk '{print $2}'|sort|uniq -c|sort-nr|more

lsof命令是Linux中的一个系统监视命令,可以查看进程打开的文件、端口等,功能强大,上面的命令通过一串的管道后只保留了句柄数和PID,执行结果如下:

Too many open files

第一列是句柄数,第二列是进程id

可以看到前两个进程的句柄数已经超过上限了,这正是这两个进程的日志正在报最上方的异常。


本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件


标签: linux
于2019-07-15发布