<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 李 明 閱讀(11133) 評論(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
    謝謝。終于找到問題原因了  回復  更多評論
      

    主站蜘蛛池模板: 亚洲风情亚Aⅴ在线发布| 亚洲人成网址在线观看| 免费看的黄色大片| 免费看a级黄色片| 午夜在线a亚洲v天堂网2019| 亚洲日韩国产AV无码无码精品| 一级成人a做片免费| 日韩免费观看一区| 中文字幕无码视频手机免费看 | 国产中文字幕在线免费观看 | 国产大片免费天天看| 久久免费国产精品一区二区| 天天看片天天爽_免费播放| 国产亚洲精品无码拍拍拍色欲 | 亚洲黄网站wwwwww| 美女被吸屁股免费网站| 特级精品毛片免费观看| AV片在线观看免费| 亚洲国产精品一区二区久久| 最近中文字幕大全免费视频| 五月天婷亚洲天综合网精品偷| 99久久亚洲综合精品成人网| 亚洲国产精品成人综合色在线| 在线永久免费观看黄网站| 91亚洲国产成人精品下载| 又粗又大又黑又长的免费视频| 久久亚洲国产午夜精品理论片| 亚洲aⅴ无码专区在线观看春色| 99ee6热久久免费精品6| 国产精品亚洲精品日韩已方| 久久久久久亚洲精品影院| 国产免费人成视频在线观看| 亚洲人成网站看在线播放| 在线涩涩免费观看国产精品 | 亚洲人成影院在线观看| 免费黄网站在线观看| 亚洲性色AV日韩在线观看| 国产四虎免费精品视频| 久久久久久a亚洲欧洲AV| 免费国产污网站在线观看不要卡| 大学生美女毛片免费视频|