最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Socket報(bào)錯(cuò)打開文件過多的問題

 更新時(shí)間:2024年05月31日 15:45:04   作者:古辛  
這篇文章主要介紹了Java Socket報(bào)錯(cuò)打開文件過多的問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java Socket報(bào)錯(cuò)打開文件過多

Caused by: java.net.SocketException: Too many open files

at sun.nio.ch.Net.socket0(Native Method)

at sun.nio.ch.Net.serverSocket(Net.java:415)

at sun.nio.ch.ServerSocketChannelImpl.<init>(ServerSocketChannelImpl.java:88)

at sun.nio.ch.SelectorProviderImpl.openServerSocketChannel(SelectorProviderImpl.java:56)

at java.nio.channels.ServerSocketChannel.open(ServerSocketChannel.java:108)

原因有多種

網(wǎng)上有說是因?yàn)橄到y(tǒng)允許打開的默認(rèn)文件數(shù)設(shè)置太小,對于網(wǎng)絡(luò)訪問,高并發(fā)訪問的情況,只需修改系統(tǒng)參數(shù)即可解決

先查看當(dāng)前的設(shè)置:

$ 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) 256
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1418
virtual memory          (kbytes, -v) unlimited

可以看出,對于我的個(gè)人電腦來說“open files”的設(shè)置是256。

可通過命名-n選項(xiàng)進(jìn)行修改

ulimit -n 4096

但該選項(xiàng)有個(gè)問題,就是只是臨時(shí)生效,比如重啟電腦后將失效,為了保證始終有效,有的linux系統(tǒng)通過修改limits.conf文件設(shè)置:

* soft nofile 65535
* hard nofile 65535

通過修改/etc/security/limits.conf文件,把所有用戶的進(jìn)程打開文件上限改為65536。

其中,*表示所有用戶,soft/hard表示軟/硬限制,還可以只真對某個(gè)用戶或某個(gè)組做修改,具體方法參見文件注釋。修改后需要重新啟動系統(tǒng)才能生效。

但是有時(shí)候,不是單靠修改該參數(shù)就能解決問題,有的是因?yàn)槌绦虻膯栴},比如本人曾經(jīng)遇到過一個(gè)程序任務(wù),由于連接服務(wù)器失敗,有個(gè)策略設(shè)置了失敗嘗試,但是未對嘗試次數(shù)進(jìn)行限制,導(dǎo)致每過一秒就嘗試連接socket,結(jié)果很快就導(dǎo)致系統(tǒng)掛掉,拋出此錯(cuò)誤。

其他程序只要讀寫文件均無法完成,

比如:

java.net.SocketException: Too many open files (Accept failed)
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
at java.net.ServerSocket.implAccept(ServerSocket.java:545)
at java.net.ServerSocket.accept(ServerSocket.java:513)

Caused by: java.io.FileNotFoundException: /tmp/data_xxxxxx.dat (Too many open files)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)

甚至還出現(xiàn)過內(nèi)存溢出的錯(cuò)誤:

out of disk space or the JVM running out of memory

為了解決此類問題

如果已經(jīng)定位了某個(gè)程序的問題,可通過該程序的日志進(jìn)行分析,也可以通過命令查看某個(gè)線程是否打開了過多文件句柄

  • 首先通過關(guān)鍵字查詢線程ID
  • 不然java線程:
ps -ef | grep java
  • 然后執(zhí)行通過線程ID查看線程所打開的文件列表:
lsof -p 1902 
  • 也可先統(tǒng)計(jì)有多少文件被打開
lsof -p 1902 | wc -l

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Maven使用方法詳及方式詳細(xì)介紹

    Maven使用方法詳及方式詳細(xì)介紹

    使用maven倉庫的話需要從網(wǎng)上下載maven的包,比如“apache-maven-3.5.4-bin.tar”,下載完成之后解壓,在解壓的文件夾中的conf目錄下的settings.xml文件夾下就可以配置maven遠(yuǎn)程倉庫和本地倉庫的地址
    2022-11-11
  • 如何利用Java8 Stream API對Map按鍵或值排序

    如何利用Java8 Stream API對Map按鍵或值排序

    這篇文章主要給大家介紹了關(guān)于如何利用Java8 Stream API對Map按鍵或值排序的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Java8具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Java中HashMap如何解決哈希沖突

    Java中HashMap如何解決哈希沖突

    本文主要介紹了Java中HashMap如何解決哈希沖突,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Java參數(shù)校驗(yàn)@Validated、@Valid介紹及使用詳解

    Java參數(shù)校驗(yàn)@Validated、@Valid介紹及使用詳解

    Javax.validation是?spring?集成自帶的一個(gè)參數(shù)校驗(yàn)接口,可通過添加注解來設(shè)置校驗(yàn)條件,這篇文章主要介紹了Java參數(shù)校驗(yàn)@Validated、@Valid介紹及使用詳解,需要的朋友可以參考下
    2024-08-08
  • Spring Retry 重試實(shí)例詳解

    Spring Retry 重試實(shí)例詳解

    這篇文章主要介紹了Spring Retry 重試,使用方式有兩種分別是命令式和聲明式,本文通過實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2022-10-10
  • Java隨機(jī)生成手機(jī)短信驗(yàn)證碼的方法

    Java隨機(jī)生成手機(jī)短信驗(yàn)證碼的方法

    這篇文章主要介紹了Java隨機(jī)生成手機(jī)短信驗(yàn)證碼的方法,涉及Java數(shù)學(xué)運(yùn)算計(jì)算隨機(jī)數(shù)及字符串操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • Java實(shí)現(xiàn)Word轉(zhuǎn)PDF的全過程

    Java實(shí)現(xiàn)Word轉(zhuǎn)PDF的全過程

    在IT領(lǐng)域,文檔格式轉(zhuǎn)換是常見的任務(wù)之一,特別是在管理大量文本數(shù)據(jù)時(shí),本文將詳細(xì)探討如何利用Java技術(shù)將Word文檔(.docx)轉(zhuǎn)換成PDF格式,需要的朋友可以參考下
    2025-04-04
  • Jenkins配置jdk、maven、git方式

    Jenkins配置jdk、maven、git方式

    為了在Jenkins中使用Java、Maven和Git,需要在系統(tǒng)管理的全局工具配置中設(shè)置這些工具,首先,確保Jenkins主機(jī)已經(jīng)安裝了JDK、Git、Maven以及Maven的settings文件,安裝完成后,按照提示配置各個(gè)工具
    2023-04-04
  • java多線程中的生產(chǎn)者和消費(fèi)者隊(duì)列詳解

    java多線程中的生產(chǎn)者和消費(fèi)者隊(duì)列詳解

    這篇文章主要介紹了java多線程中的生產(chǎn)者和消費(fèi)者隊(duì)列詳解,隊(duì)列,是一種數(shù)據(jù)結(jié)構(gòu),除了優(yōu)先級隊(duì)列和LIFO隊(duì)列外,隊(duì)列都是以FIFO(先進(jìn)先出)的方式對各個(gè)元素進(jìn)行排序的,需要的朋友可以參考下
    2024-01-01
  • idea在plugins中搜不到插件的解決方法

    idea在plugins中搜不到插件的解決方法

    本文主要介紹了idea在plugins中搜不到插件的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評論

信丰县| 湛江市| 垫江县| 金坛市| 常山县| 海丰县| 自治县| 蛟河市| 新疆| 清河县| 绥中县| 苗栗县| 钟山县| 宁海县| 巴林右旗| 阿荣旗| 射洪县| 鱼台县| 玛曲县| 陈巴尔虎旗| 酉阳| 南平市| 柳江县| 纳雍县| 宁陕县| 祁门县| 平远县| 潜山县| 永宁县| 康保县| 台东县| 略阳县| 马关县| 青川县| 宣武区| 准格尔旗| 营口市| 溧阳市| 周口市| 军事| 涞源县|