1. 程式人生 > >java.net.SocketException: Too many open files問題分析及解決方案

java.net.SocketException: Too many open files問題分析及解決方案

java web應用在執行一段時間之後出現了這麼個問題

	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:453)
			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.JIoEndpoint$Acceptor.run(JIoEndpoint.java:216)

 用ulimit -a看看linux開啟檔案限制

	[[email protected] ~]# ulimit -a
	core file size          (blocks, -c) 0
	data seg size           (kbytes, -d) unlimited
	scheduling priority             (-e) 0
	file size               (blocks, -f) unlimited
	pending signals                 (-i) 360448
	max locked memory       (kbytes, -l) 32
	max memory size         (kbytes, -m) unlimited
	open files                      (-n) 1024
	pipe size            (512 bytes, -p) 8
	POSIX message queues     (bytes, -q) 819200
	real-time priority              (-r) 0
	stack size              (kbytes, -s) 10240
	cpu time               (seconds, -t) unlimited
	max user processes              (-u) 360448
	virtual memory          (kbytes, -v) unlimited
	file locks                      (-x) unlimited
用lsof -p [程序ID] 可以看到某ID的開啟檔案狀況。程序ID可能用 ps -ef|grep java列出
	[[email protected] ~]# lsof -p 1940
	COMMAND  PID USER   FD   TYPE             DEVICE     SIZE      NODE NAME
	java    1940 admin  cwd    DIR               0,68     4096 385090717 /admin/apache-tomcat-7.0.39/bin
	java    1940 admin  rtd    DIR               0,68     4096 384141801 /
	java    1940 admin  txt    REG               0,68    47308 385122308 /admin/jdk1.6.0_13/jre/bin/java
	java    1940 admin  mem    REG              202,3          385122339 /admin/jdk1.6.0_13/jre/lib/i386/client/libjvm.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122308 /admin/jdk1.6.0_13/jre/bin/java (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122425 /admin/jdk1.6.0_13/jre/lib/i386/client/classes.jsa (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122426 /admin/jdk1.6.0_13/jre/lib/charsets.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          384959153 /lib/libresolv-2.12.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          384959143 /lib/libnss_dns-2.12.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122355 /admin/jdk1.6.0_13/jre/lib/i386/libnio.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122354 /admin/jdk1.6.0_13/jre/lib/i386/libnet.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122325 /admin/jdk1.6.0_13/jre/lib/ext/sunjce_provider.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122326 /admin/jdk1.6.0_13/jre/lib/ext/sunpkcs11.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122392 /admin/jdk1.6.0_13/jre/lib/jce.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122405 /admin/jdk1.6.0_13/jre/lib/resources.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122391 /admin/jdk1.6.0_13/jre/lib/jsse.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090820 /admin/apache-tomcat-7.0.39/lib/tomcat-dbcp.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090824 /admin/apache-tomcat-7.0.39/lib/tomcat-jdbc.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090821 /admin/apache-tomcat-7.0.39/lib/tomcat-i18n-es.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090816 /admin/apache-tomcat-7.0.39/lib/jsp-api.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090817 /admin/apache-tomcat-7.0.39/lib/servlet-api.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090813 /admin/apache-tomcat-7.0.39/lib/el-api.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090811 /admin/apache-tomcat-7.0.39/lib/catalina.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090812 /admin/apache-tomcat-7.0.39/lib/ecj-4.2.1.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090819 /admin/apache-tomcat-7.0.39/lib/tomcat-coyote.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122356 /admin/jdk1.6.0_13/jre/lib/i386/libmanagement.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122440 /admin/jdk1.6.0_13/jre/lib/rt.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          384500332 /usr/lib/locale/locale-archive-rpm (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122427 /admin/jdk1.6.0_13/jre/lib/ext/localedata.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090825 /admin/apache-tomcat-7.0.39/lib/tomcat-util.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090807 /admin/apache-tomcat-7.0.39/lib/annotations-api.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090815 /admin/apache-tomcat-7.0.39/lib/jasper.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090818 /admin/apache-tomcat-7.0.39/lib/tomcat-api.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090809 /admin/apache-tomcat-7.0.39/lib/catalina-ha.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090814 /admin/apache-tomcat-7.0.39/lib/jasper-el.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090810 /admin/apache-tomcat-7.0.39/lib/catalina-tribes.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090823 /admin/apache-tomcat-7.0.39/lib/tomcat-i18n-ja.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090822 /admin/apache-tomcat-7.0.39/lib/tomcat-i18n-fr.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090808 /admin/apache-tomcat-7.0.39/lib/catalina-ant.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090794 /admin/apache-tomcat-7.0.39/bin/tomcat-juli.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090781 /admin/apache-tomcat-7.0.39/bin/commons-daemon.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385090776 /admin/apache-tomcat-7.0.39/bin/bootstrap.jar (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122350 /admin/jdk1.6.0_13/jre/lib/i386/libzip.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122346 /admin/jdk1.6.0_13/jre/lib/i386/libjava.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          384959101 /lib/libnss_files-2.12.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122345 /admin/jdk1.6.0_13/jre/lib/i386/libverify.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          384959147 /lib/libnsl-2.12.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385222531 /tmp/hsperfdata_admin/1940 (path dev=0,68)
	java    1940 admin  mem    REG              202,3          384959158 /lib/librt-2.12.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          384959112 /lib/libm-2.12.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          384959123 /lib/libc-2.12.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          384958823 /lib/libdl-2.12.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122348 /admin/jdk1.6.0_13/jre/lib/i386/jli/libjli.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          384959167 /lib/libpthread-2.12.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          385122332 /admin/jdk1.6.0_13/jre/lib/i386/native_threads/libhpi.so (path dev=0,68)
	java    1940 admin  mem    REG              202,3          384959214 /lib/ld-2.12.so (path dev=0,68)
	java    1940 admin    0r   CHR                1,3          384926820 /dev/null
	java    1940 admin    1w   REG               0,68 26134081 385090804 /admin/apache-tomcat-7.0.39/logs/catalina.out
	java    1940 admin    2w   REG               0,68 26134081 385090804 /admin/apache-tomcat-7.0.39/logs/catalina.out
	java    1940 admin    3r   REG               0,68    28615 385090776 /admin/apache-tomcat-7.0.39/bin/bootstrap.jar
	java    1940 admin    4r   CHR                1,8          384926869 /dev/random
	java    1940 admin    5r   CHR                1,9          384926888 /dev/urandom
	java    1940 admin    6r   REG               0,68    24281 385090781 /admin/apache-tomcat-7.0.39/bin/commons-daemon.jar
	java    1940 admin    7r   REG               0,68    38161 385090794 /admin/apache-tomcat-7.0.39/bin/tomcat-juli.jar
	java    1940 admin    8r   REG               0,68 51139867 385122440 /admin/jdk1.6.0_13/jre/lib/rt.jar
	java    1940 admin    9w   REG               0,68    23357 385090941 /admin/apache-tomcat-7.0.39/logs/catalina.2013-05-29.log
	java    1940 admin   10w   REG               0,68     6736 385090942 /admin/apache-tomcat-7.0.39/logs/localhost.2013-05-29.log
	java    1940 admin   11w   REG               0,68        0 385090943 /admin/apache-tomcat-7.0.39/logs/manager.2013-05-29.log
	java    1940 admin   12w   REG               0,68        0 385090944 /admin/apache-tomcat-7.0.39/logs/host-manager.2013-05-29.log
	java    1940 admin   13r   REG               0,68    54176 385090808 /admin/apache-tomcat-7.0.39/lib/catalina-ant.jar
	java    1940 admin   14r   REG               0,68    48693 385090822 /admin/apache-tomcat-7.0.39/lib/tomcat-i18n-fr.jar
	java    1940 admin   15r   REG               0,68    51678 385090823 /admin/apache-tomcat-7.0.39/lib/tomcat-i18n-ja.jar
	java    1940 admin   34r   REG               0,68   618621 385122391 /admin/jdk1.6.0_13/jre/lib/jsse.jar
	java    1940 admin   35r   REG               0,68    88256 385122392 /admin/jdk1.6.0_13/jre/lib/jce.jar
	java    1940 admin   36r   REG               0,68   226069 385122326 /admin/jdk1.6.0_13/jre/lib/ext/sunpkcs11.jar
	java    1940 admin   37r   REG               0,68   170239 385122325 /admin/jdk1.6.0_13/jre/lib/ext/sunjce_provider.jar
	java    1940 admin   38u  IPv6          221130420                TCP *:http (LISTEN)
	java    1940 admin   39u  sock                0,5          221130418 can't identify protocol
	java    1940 admin   40u  IPv6          221130421                TCP *:8009 (LISTEN)
	java    1940 admin   41w   REG               0,68    15006 385090940 /admin/apache-tomcat-7.0.39/logs/localhost_access_log.2013-05-29.txt
	java    1940 admin   42u  IPv6          221137418                TCP localhost.localdomain:41285->localhost.localdomain:mysql (ESTABLISHED)
	java    1940 admin   44u  IPv6          221132667                TCP localhost.localdomain:mxi (LISTEN)
	java    1940 admin   46r   REG               0,68   311856 384278348 (deleted) /admin/data/_2pb.tis
	java    1940 admin   47r   REG               0,68   148741 384278362 (deleted) /admin/data/_2pb.frq
	java    1940 admin   48r   REG               0,68   311842 384277396 (deleted) /admin/data/_2pc.tis
	java    1940 admin   87w   REG               0,68     4355 388497409 /logs/run.log
	java    1940 admin  110r   CHR                1,8          384926869 /dev/random
	java    1940 admin  111r   REG               0,68   311856 384278348 (deleted) /admin/data/_2pb.tis
	java    1940 admin  112u  unix 0xffff88045ea3b9c0          221132407 socket

ulimit -n 4096 臨時把開啟檔案數的上限設為了4096

如果要永久生效,可以通過下面的方式設定。

修改/etc/security/limits.conf 新增如下一行:

* - nofile 1006154

修改/etc/pam.d/login新增如下一行

相關推薦

Linux下tomcat報錯“java.net.SocketException: Too many open files”--MINA2 錯誤解決

轉載: 因為這個問題,我也是經過三次修改後,才徹底解決該問題。我是遇到了錯誤資訊:“Too many open files”和“No buffer space availabel”,從我的專案上看,兩個問題都是因為使用MINA2時,有些資源沒有關閉造成的。但是出現“To

java.net.SocketException: Too many open files問題分析解決方案

java web應用在執行一段時間之後出現了這麼個問題 java.net.SocketException: Too many open files at java.net.PlainSocketImpl.socketAccept(Native Method)

java.net.SocketException: Too many open files

原因: 作業系統的中開啟檔案的最大控制代碼數受限所致,常常發生在很多個併發使用者訪問伺服器的時候。因為為了執行每個使用者的應用伺服器都要載入很多檔案(new 一個socket 就需要一個檔案控制代碼),這就會導致開啟檔案的控制代碼的缺乏。 解決方式: a) 儘量把類打成

解決Linux下“java.net.SocketException: Too many open files”異常

背景:專案上線後發現Telnet模組在穩定執行一段時間後會自動斷開,無法登陸,後臺丟擲:“java.net.SocketException: Too many open files”異常。環境: Java程式碼 Linux版本:cat /proc/version

在liunx下經常出現java.net.SocketException: Too many open files錯誤是什麼原因

釋出在Tomcat+linux伺服器上的專案經常報”java.net.SocketException: Too many open files"的錯誤,根據錯誤分析如下 : Linux 系統預設的open files的設定是1024 通過 ulimit -a進行檢視。 core file size     

java.net.SocketException: Too many open files 解決辦法

一早起來,發現伺服器掛了,檢視日子,發現報了一推java.net.SocketException: Too many open files異常。搜尋後才知道,是linux系統對程序開啟的檔案數量是有限制的。 用命令ul

mina通訊,對於高併發的產生:java.io.IOException: Too many open files(開啟檔案控制代碼過多問題)

起因:由於業務系統有多個定時任務定時訪問銀行端,銀行每天也有大量業務訪問業務系統,都是通過mina通訊,部署在測試環境的系統每過一兩天開啟控制代碼過萬,生產的也是一週左右不重啟業務系統就會爆掉。一開始並不清楚到底是哪方面原因導致控制代碼增長這麼快,因為這是一個老系統,經過多次升級,大量的併發、多執行緒,所以只

【高併發】壓力測試 java.io.IOException: Too many open files解決方案

 對作業系統做相關的設定,增加最大檔案控制代碼數量。Linux在Linux核心2.4.x中需要修改原始碼,然後重新編譯核心才生效。編輯Linux核心原始碼中的 include/linux/fs.h檔案,將 NR_FILE 由8192改為65536,將NR_RESERVED_FILES 由10 改為 128。編

java.io.FileNotFoundException (Too many open files)

今天kafka叢集報錯,檢視日誌提示 [2018-07-18 17:34:02,672] ERROR Error while rolling log segment for PREPROCESS in dir /mnt/sdc (kafka.server.LogDirFai

高並發連接導致打開文件過多:java.io.IOException: Too many open files 解決方法

限制 security 打開文件 soft api too limit com inf 用 CentOS 做 API 接口服務器供其他終端調用時,並發量高會報錯:java.io.IOException: Too many open files。 其原因是在 Linux 下

測並發 Too many open files 問題的解決

ref get http sign pro light 程序 sched pen ulimit -a 查看限制顯示: core file size (blocks, -c) 0 data seg size (kbytes, -d) u

scrapy遇到Couldn't bind: 24: Too many open files.錯誤的解決

編輯 所有 解決 socket 回收 系統 int 探測 句柄 現象為爬蟲日誌報出Couldn‘t bind: 24: Too many open files.錯誤,netstat -natep | grep 代理端口 或爬蟲進程ID,有大量ESTABLISHED的連接。

執行ab測試時socket: Too many open files (24)的解決辦法

今天在配置nginx優化時,使用ab測試5000個併發報錯,錯誤內容如下: <span style="font-size:14px;">[[email protected] bin]# ./ab -n 5000 -c 5000 http://192.1

HTTP FAILED: java.net.SocketException: socket failed: EMFILE (Too many open files

場景: 在使用Retrofit進行大量請求時,出現異常 異常: HTTP FAILED: java.net.SocketException: socket failed: EMFILE (Too many open files)  解決方案: 在建立連結時,不要頻繁

too many open files linux服務器 golang java

add -m 使用 san awk margin 1.0 占用 sim 1. 現象服務的cpu跑滿(golang實現), 並大量報too many open files錯誤.服務使用systemd來運行,部署在阿裏ecs上.2.分析從日誌來看,cpu的上升主要為到達文件數限

too many open files錯誤

一個 google pid .json 斷開連接 ret 服務 spi end 雖然一直在Linux下開發服務,但是說實話,Linux的東西我基本不懂。這次這個問題的解決,讓我稍微知道一些東西了。 大家都知道,最近我模仿binux大嬸的pyspider的害羞組在線上跑了一

Linux server上too many open files問題

server bsp one 當前 java程序 clas gre work -h 之前測試遇到了"too many open files"的問題。ulimit -Hn 查了下發現server上最大open file數是4096。寫了個簡單的腳本檢測發現進程創建的fd個數在

解決tomcat too many open files問題

限制 spa 8.0 .com nofile tom files 環境 內容 運行環境為 centos7.2 tomcat 為 tomcat 8.0.39.0 ulimit -a ulimit -n 解決的都是 系統的問題 tomcat 報too many

Linux允許打開最大文件句柄數的參數調優-"too many open files"問題

方式 描述 pip lsof 允許 出現 有效 stack awk 都知道Linux系統的特性,一切皆文件,所有在運行zabbix這樣的服務時,其中重要的一個調優就是調整linux系統的最大文件句柄數,解決“too many open files”的問題,增大程序運行允許打

linux下tomcat之too many open files

設置 inux roc spa ava linux 執行 java 使用命令 一、問題表象:   程序日誌報錯:java.io.IOException: Too many open files at 二、解決方案:   1、查看系統允許打開的最大文件數:     ca