<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ALL is Well!

    敏捷是一條很長的路,摸索著前進著

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      30 隨筆 :: 23 文章 :: 71 評論 :: 0 Trackbacks

    今天生產環境的一個Java應用程序的日志里,出現了很不和諧的記錄:
    java.io.IOException: Too many open files

    在網上查了一些關于此異常的解決方案,基本上都是說要擴大linux系統的文件句柄數限制。
    但如果程序對于Socket、Stream等使用后沒能及時關閉的話,擴大這個文件句柄數限制是治標不治本的。

    我先是在測試環境擴大了linux的文件句柄數限制,隨后提高測試壓力,過一段時間后發現還是會報這個異常。
    (中間也用lsof命令查看占用的文件句柄數,不斷的增加啊,心寒啊。)
    現象是 用 lsof -p *** 來查看,形如
    java    22055 webapp   21w  FIFO                0,6          29300342 pipe
    java    22055 webapp   22r  FIFO                0,6          29256305 pipe

    在不斷增加。

    所以我果斷對代碼進行了排查。文件的IO操作、對數據庫的操作,看了都沒有什么問題,
    最后排查到由Java程序去調用Shell腳本的代碼,

    代碼寫的還是很簡單的,看上去很清晰,但是有明顯的問題:

    Process proc = Runtime.getRuntime().exec(cmd);
    //對proc.getErrorStream()、proc.getInputStream()流的操作。
    proc.waitFor();
    return proc.exitValue();


    這里的問題是 對流沒有在finally處做關閉處理。這個問題比較明顯。
    還有一個問題就是Process的使用問題,

    如果對Process的不熟悉的話,可能會以為return proc.exitValue();之后就萬事大吉了。
    (exitValue()確實很像是已經退出了并得到返回值的意思,估計是這個方法的名字迷惑了我們的開發人員。)
    實際不然,看Jdk的幫助文檔可以發現,要通過destroy()來實現對子進程的銷毀并釋放占用的File Descriptor。

    這個問題,短時間的測試是不會有問題的,但在投入生產后,隨著程序的長期運行,開發中的疏忽就會暴露了。
    所以在對使用的方法拿不準的情況下,還是要多做調查,謹慎使用啊。

    希望能讓在排查類似問題的朋友注意,如果你排查的代碼中也存在Runtime.getRuntime().exec(cmd)這樣的調用,那么請確保那段代碼沒有問題。

    本文為原創,歡迎轉載,轉載請注明出處BlogJava

    posted on 2010-09-14 19:36 李 明 閱讀(11126) 評論(2)  編輯  收藏 所屬分類: Java

    評論

    # re: Runtime.getRuntime().exec(cmd)使用不當引起的java.io.IOException: Too many open files[未登錄] 2010-09-17 17:44 BeanSoft
    好文章 收藏!  回復  更多評論
      

    # re: Runtime.getRuntime().exec(cmd)使用不當引起的java.io.IOException: Too many open files 2010-11-26 15:07 lzycsd
    謝謝。終于找到問題原因了  回復  更多評論
      

    主站蜘蛛池模板: 中文成人久久久久影院免费观看| 综合一区自拍亚洲综合图区| 国产精品99精品久久免费| 亚洲高清无码综合性爱视频| 美女隐私免费视频看| 国产成人精品免费视频软件| 亚洲国产精品无码久久九九大片| 女人张开腿等男人桶免费视频| 亚洲一卡2卡3卡4卡国产网站| 无码永久免费AV网站| 亚洲 日韩经典 中文字幕| 最近免费中文字幕4| 国产精品亚洲专区无码牛牛| 国产18禁黄网站免费观看| 免费观看四虎精品成人| 亚洲无线观看国产精品| 免费人成激情视频在线观看冫| 亚洲av色福利天堂| 免费观看激色视频网站bd| 亚洲高清有码中文字| 国产成人精品免费直播| 亚美影视免费在线观看| 亚洲精品高清无码视频| 1000部啪啪毛片免费看| 亚洲综合色婷婷在线观看| 一级毛片直播亚洲| 青柠影视在线观看免费| 亚洲的天堂av无码| 日韩在线看片免费人成视频播放| 爱情岛亚洲论坛在线观看| 亚洲夜夜欢A∨一区二区三区| 3d成人免费动漫在线观看| 亚洲乱理伦片在线观看中字| 亚洲乱码日产精品a级毛片久久| 久久精品国产免费一区| 亚洲免费闲人蜜桃| 亚洲午夜福利精品无码| 永久黄色免费网站| 一级做a毛片免费视频| 亚洲经典在线中文字幕| 亚洲 小说区 图片区 都市|