<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
    謝謝。終于找到問題原因了  回復  更多評論
      

    主站蜘蛛池模板: 亚洲AV无码国产精品麻豆天美 | 国产亚洲欧洲精品| 高清免费久久午夜精品| 国产在线19禁免费观看国产| 亚洲欧美中文日韩视频| 色吊丝永久在线观看最新免费| 亚洲小说图片视频| 无码永久免费AV网站| 亚洲中文字幕一二三四区| 好男人视频社区精品免费| 亚洲国产成人综合精品| 免费a级毛片大学生免费观看| 特级毛片A级毛片100免费播放| 免费人成在线观看网站视频| 国产精品青草视频免费播放| 国产亚洲日韩一区二区三区| 国产无遮挡裸体免费视频在线观看 | 成人黄软件网18免费下载成人黄18免费视频 | 国产久爱免费精品视频 | 成人免费视频软件网站| 久久亚洲欧美国产精品| 无码国产亚洲日韩国精品视频一区二区三区 | 国产亚洲精品免费视频播放| 中国性猛交xxxxx免费看| 亚洲阿v天堂在线| 永久在线观看www免费视频| 亚洲综合丁香婷婷六月香| 妞干网免费视频在线观看| 久久WWW免费人成—看片| 亚洲欧洲第一a在线观看| 免费精品一区二区三区在线观看| 成年网在线观看免费观看网址 | 国产gv天堂亚洲国产gv刚刚碰| 亚欧免费一级毛片| 亚洲国产美女精品久久久| 亚洲小说区图片区另类春色| 亚洲天堂免费在线| 一个人看的www免费在线视频| 亚洲天天做日日做天天看 | 91人成网站色www免费下载| 久久水蜜桃亚洲AV无码精品|