glassfish 在預設 porcess pool number 為 5 時執行就已經開啟了 500 多的檔案,
所以要是將 porcess pool number 調整為 500 瞬間就會超過 1024,然後出現下面的 Error Message。
##
#|2011-11-26T21:39:51.917+080
java.io.IOException: 開啟太多檔案
at sun.nio.ch.IOUtil.initPipe(Nat
at sun.nio.ch.EPollSelectorImpl.<
at sun.nio.ch.EPollSelectorProvid
at java.nio.channels.Selector.ope
at com.sun.grizzly.util.Utils.ope
at com.sun.grizzly.TCPSelectorHan
at com.sun.grizzly.TCPSelectorHan
at com.sun.grizzly.SelectorHandle
at com.sun.grizzly.SelectorHandle
at java.util.concurrent.ThreadPoo
at java.util.concurrent.ThreadPoo
at java.lang.Thread.run(Thread.ja
|#]
##
解法是要先調整每個 porcess 可以開啟的檔案數上限,
先編輯 /etc/security/limits.conf
加入下面這一行,目的是未來機器重開都會讀取我們設定的新上限值。
##
* soft nofile 65536
##
然後用這個指令動態修改
##
ulimit -Sn 65536##
參考資料:
http://www.cyberciti.biz/faq/howto-linux-get-list-of-open-files/
http://www.linuxidc.com/Linux/2010-04/25283.htm
沒有留言:
張貼留言