日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

            歡迎訪問 生活随笔!

            生活随笔

            當前位置: 首頁 > 运维知识 > linux >内容正文

            linux

            java 句柄数 设置_技术文档(2)--Linux 句柄数设置情况,问题:java.io.IOException: Too many open files...

            發(fā)布時間:2023/12/20 linux 26 豆豆
            生活随笔 收集整理的這篇文章主要介紹了 java 句柄数 设置_技术文档(2)--Linux 句柄数设置情况,问题:java.io.IOException: Too many open files... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

            打開的文件過多,一般來說是由于應用程序對資源使用不當造成,比如沒有及時關閉Socket或數(shù)據庫連接等。但也可能應用確實需要打開比較多的文件句柄,而系統(tǒng)本身的設置限制了這一數(shù)量。

            第一個異常在錯誤影響到基礎 TCP 協(xié)議時拋出,而第二個異常則在錯誤影響到 I/O 操作時拋出。

            文件打開數(shù)過多最壞的情況可以使系統(tǒng)崩潰,到時候只能是重起服務器了。

            原因:

            操作系統(tǒng)的中打開文件的最大句柄數(shù)受限所致,常常發(fā)生在很多個并發(fā)用戶訪問服務器的時候.因為為了執(zhí)行每個用戶的應用服務器都要加載很多文件(new一個socket就需要一個文件句柄),這就會導致打開文件的句柄的缺乏.

            解決:

            盡量把類打成jar包,因為一個jar包只消耗一個文件句柄,如果不打包,一個類就消耗一個文件句柄.

            java的垃圾回收不能關閉網絡連接打開的文件句柄,如果沒有執(zhí)行close()(例如:java.net.Socket.close())則文件句柄將一直存在,而不能被關閉.你也可以考慮設置socket的最大打開數(shù)來控制這個問題.

            對操作系統(tǒng)做相關的設置,增加最大文件句柄數(shù)量。

            Linux

            Linux內核2.4.x中需要修改源代碼,然后重新編譯內核才生效。編輯Linux內核源代碼中的 include/linux/fs.h文件,將

            NR_FILE 由8192改為65536,將NR_RESERVED_FILES 由10 改為 128。編輯fs/inode.c

            文件將MAX_INODE 由16384改為262144?;蛘呔庉?/etc/sysctl.conf? 文件增加兩行

            fs.file-max =?65536 和 fs.inode-max =?262144

            。一般情況下,系統(tǒng)最大打開文件數(shù)比較合理的設置為每4M物理內存256,比如256M.可以用lsof -p

            process>看打開的文件句柄數(shù).

            Windows

            最大文件句柄是16,384,你在任務管理器的性能這一項中可以看到當前打開的句柄數(shù).

            服務器端修改:

            查看系統(tǒng)允許打開的最大文件數(shù)

            #cat /proc/sys/fs/file-max

            查看每個用戶允許打開的最大文件數(shù)

            ulimit -a

            發(fā)現(xiàn)系統(tǒng)默認的是open files (-n) 1024,問題就出現(xiàn)在這里。

            在系統(tǒng)文件/etc/security/limits.conf中修改這個數(shù)量限制,

            在文件中加入內容:

            * soft nofile 65536

            * hard nofile 65536

            另外方法:

            1.使用ps -ef |grep java?? (java代表你程序,查看你程序進程) 查看你的進程ID,記錄ID號,假設進程ID為12

            2.使用:lsof -p 12 | wc -l??? 查看當前進程id為12的 文件操作狀況

            執(zhí)行該命令出現(xiàn)文件使用情況為 1052

            3.使用命令:ulimit -a?? 查看每個用戶允許打開的最大文件數(shù)

            發(fā)現(xiàn)系統(tǒng)默認的是open files (-n) 1024,問題就出現(xiàn)在這里。

            4.然后執(zhí)行:ulimit -n 4096

            將open files (-n) 1024 設置成open files (-n) 4096

            這樣就增大了用戶允許打開的最大文件數(shù)

            遇到實際問題:

            兩臺服務器句柄數(shù)分別為:

            解決方案:

            1、查看每臺服務器允許每個用戶打開的文件數(shù)

            ulimit -a

            2、修改每臺服務器對應的 limits.conf文件 句柄數(shù)

            /etc/security/limits.conf?? 這個文件

            3、修改完之后 使用命令使其生效

            sysctl -p

            4、重啟對應服務

            總結

            以上是生活随笔為你收集整理的java 句柄数 设置_技术文档(2)--Linux 句柄数设置情况,问题:java.io.IOException: Too many open files...的全部內容,希望文章能夠幫你解決所遇到的問題。

            如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。