posts - 241,  comments - 116,  trackbacks - 0

          原因:   

              操作系統(tǒng)的中打開文件的最大句柄數(shù)受限所致,常常發(fā)生在很多個(gè)并發(fā)用戶訪問服務(wù)器的時(shí)候.因?yàn)闉榱藞?zhí)行每個(gè)用戶的應(yīng)用服務(wù)器都要加載很多文件(new一個(gè)socket就需要一個(gè)文件句柄),這就會(huì)導(dǎo)致打開文件的句柄的缺乏.

          解決: 

          • 盡量把類打成jar包,因?yàn)橐粋€(gè)jar包只消耗一個(gè)文件句柄,如果不打包,一個(gè)類就消耗一個(gè)文件句柄.
          • java的垃圾回收不能關(guān)閉網(wǎng)絡(luò)連接打開的文件句柄,如果沒有執(zhí)行close()(例如:java.net.Socket.close())則文件句柄將一直存在,而不能被關(guān)閉.你也可以考慮設(shè)置socket的最大打開數(shù)來控制這個(gè)問題.
          •  對(duì)操作系統(tǒng)做相關(guān)的設(shè)置,增加最大文件句柄數(shù)量。
            1. Linux
              在 Linux內(nèi)核2.4.x中需要修改源代碼,然后重新編譯內(nèi)核才生效。編輯Linux內(nèi)核源代碼中的 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ù)比較合理的設(shè)置為每4M物理內(nèi)存256,比如256M.可以用lsof -p <pid of process>看打開的文件句柄數(shù).
            2. Windows
              最大文件句柄是16,384,你在任務(wù)管理器的性能這一項(xiàng)中可以看到當(dāng)前打開的句柄數(shù).
          posted on 2012-01-06 13:14 墻頭草 閱讀(964) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運(yùn)專家
          主站蜘蛛池模板: 云林县| 罗源县| 呼玛县| 河间市| 吴堡县| 广灵县| 靖宇县| 同江市| 都江堰市| 缙云县| 改则县| 体育| 黑龙江省| 辰溪县| 将乐县| 河间市| 临城县| 清水县| 宁都县| 上高县| 武安市| 古浪县| 登封市| 信阳市| 长宁区| 邢台县| 深圳市| 旅游| 广州市| 杭锦后旗| 冷水江市| 卢湾区| 沂水县| 丰原市| 虎林市| 剑河县| 庆阳市| 秦皇岛市| 蚌埠市| 宁国市| 新泰市|