posts - 241,  comments - 116,  trackbacks - 0

          原因:   

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

          解決: 

          • 盡量把類打成jar包,因為一個jar包只消耗一個文件句柄,如果不打包,一個類就消耗一個文件句柄.
          • java的垃圾回收不能關閉網絡連接打開的文件句柄,如果沒有執行close()(例如:java.net.Socket.close())則文件句柄將一直存在,而不能被關閉.你也可以考慮設置socket的最大打開數來控制這個問題.
          •  對操作系統做相關的設置,增加最大文件句柄數量。
            1. 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 。一般情況下,系統最大打開文件數比較合理的設置為每4M物理內存256,比如256M.可以用lsof -p <pid of process>看打開的文件句柄數.
            2. Windows
              最大文件句柄是16,384,你在任務管理器的性能這一項中可以看到當前打開的句柄數.
          posted on 2012-01-06 13:14 墻頭草 閱讀(964) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          人人游戲網 軟件開發網 貨運專家
          主站蜘蛛池模板: 肇州县| 新昌县| 伊宁市| 区。| 新巴尔虎右旗| 高雄县| 马尔康县| 海城市| 平潭县| 舞钢市| 五家渠市| 定结县| 鄄城县| 新沂市| 会昌县| 高阳县| 承德县| 墨竹工卡县| 扬州市| 屯门区| 临猗县| 合川市| 武城县| 准格尔旗| 西乡县| 南城县| 娱乐| 新乡县| 津南区| 洞头县| 彭山县| 镇原县| 铁岭市| 徐州市| 随州市| 潮安县| 西青区| 荃湾区| 宣武区| 甘谷县| 南开区|