我的系統遭受OOM(可能是由於DOS攻擊)。 我正在使用Tomcat 7,NIO。 我正在尋找讓我的系統對這些攻擊更加強大的方法(儘管我不希望Tomcat完全免疫 - 我想盡可能提高魯棒性)。Tomcat oomParachute:如何正確配置
我的日誌顯示:
Exception in thread "http-nio-8080-exec-285" Exception in thread "http-nio-8080-exec-82" SEVERE:Memory usage is low, parachute is non existent, your system may start failing.
Exception in thread "PoolCleaner[216942577:1400676008859]" SEVERE:Memory usage is low, parachute is non existent, your system may start failing.
於是我開始調查oomParachute。
文檔(http://tomcat.apache.org/tomcat-7.0-doc/config/http.html)說非常少:
(INT)的NIO連接器實現名爲降落傘一個OutOfMemoryError策略。它將一大塊數據保存爲一個字節數組。如果是OOM,這部分數據將被釋放並報告錯誤。這將給虛擬機足夠的空間來清理。 oomParachute表示降落傘(字節數組)的大小(以字節爲單位)。默認值是1024 * 1024(1MB)。請注意,這僅適用於與Java堆空間有關的OOM錯誤,並且絕對不能保證您將能夠恢復。如果你在Java堆外部有一個OOM,那麼這個降落傘技巧將無濟於事。
所以我想弄清楚: 是否真的有默認的文檔說的?如果是這樣,爲什麼我會得到「降落傘不存在」?
我應該定義一個降落傘嗎?我應該放哪些價值?什麼參數在確定這個參數的值時起作用? (併發連接的數量?預期的請求大小?總堆?)
這個降落傘真的有什麼用?
謝謝!