linux服务器报Too many open files的解决方法
linux?上tomcat?服務(wù)器拋出socket異常“文件打開太多”的問題?
java.net.SocketException:?Too?many?open?files
at?java.net.PlainSocketImpl.socketAccept(Native?Method)
at?java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
at?java.net.ServerSocket.implAccept(ServerSocket.java:450)
at?java.net.ServerSocket.accept(ServerSocket.java:421)
at?org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:60)
at?org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.java:407)
at?org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:70)
at?org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at?java.lang.Thread.run(Thread.java:595)?
原本以為是tomcat的配置或是應(yīng)用本身的問題,"谷歌"一把后才發(fā)現(xiàn),該問題的根本原因是由于系統(tǒng)文件資源的限制導(dǎo)致的。
具體的解決方式可以參考一下:
1。ulimit?-a?查看系統(tǒng)目前資源限制的設(shè)定。
[root@test?security]#?ulimit?-a
core?file?size????????(blocks,?-c)?0
data?seg?size?????????(kbytes,?-d)?unlimited
file?size?????????????(blocks,?-f)?unlimited
max?locked?memory?????(kbytes,?-l)?unlimited
max?memory?size???????(kbytes,?-m)?unlimited
open?files????????????????????(-n)?1024
pipe?size??????????(512?bytes,?-p)?8
stack?size????????????(kbytes,?-s)?8192
cpu?time?????????????(seconds,?-t)?unlimited
max?user?processes????????????(-u)?7168
virtual?memory????????(kbytes,?-v)?unlimited
[root@test?security]#?
通過以上命令,我們可以看到open?files?的最大數(shù)為1024
那么我們可以通過一下命令修改該參數(shù)的最大值
2.?ulimit?-n?4096
[root@test?security]#?ulimit?-n?4096
[root@test?security]#?ulimit?-a
core?file?size????????(blocks,?-c)?0
data?seg?size?????????(kbytes,?-d)?unlimited
file?size?????????????(blocks,?-f)?unlimited
max?locked?memory?????(kbytes,?-l)?unlimited
max?memory?size???????(kbytes,?-m)?unlimited
open?files????????????????????(-n)?4096
pipe?size??????????(512?bytes,?-p)?8
stack?size????????????(kbytes,?-s)?8192
cpu?time?????????????(seconds,?-t)?unlimited
max?user?processes????????????(-u)?7168
virtual?memory????????(kbytes,?-v)?unlimited
這樣我們就修改了系統(tǒng)在同一時間打開文件資源的最大數(shù),基本解決以上問題。
報這個錯誤就在我那次登陸更新之后又報的,原來ulimit -n 4096 命令只能臨時的改變open files 的值,當(dāng)重新登陸后又會恢復(fù),所以需要永久設(shè)置open files 的值才行啊,用ulimit -n 修改open files 總是不能保持。所以用下面一個簡單的辦法更好些。
修改/etc/security/limits.conf
添加如下一行:* - nofile 65536
修改/etc/pam.d/login
添加如下一行session required /lib/security/pam_limits.so
退出shell登陸,重新登陸一次即生效(運行ulimit -n 檢查)
轉(zhuǎn)載于:https://www.cnblogs.com/yangxia-test/p/3356928.html
總結(jié)
以上是生活随笔為你收集整理的linux服务器报Too many open files的解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大家好,换博客了,希望大家多多关注
- 下一篇: 如何防止家中电器电击引发火灾?