Tomcat oomParachute:如何正确配置
我的系统遭受OOM(可能是由于DOS攻击)。我正在使用Tomcat 7,NIO。我正在寻找使我的系统对这些攻击更加健壮的方法(尽管我不期望使Tomcat完全免疫 - 我想尽可能地提高健壮性)。
我的日志显示:
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)很少说:
(整型)NIO连接器实现了一种称为降落伞的OutOfMemorerror策略。它以字节数组的形式保存一个数据块。如果是 OOM,则会释放此数据块并报告错误。这将为 VM 提供足够的清理空间。oomParachute 表示降落伞(字节数组)的大小(以字节为单位)。默认值为 1024*1024(1MB)。请注意,这仅适用于有关 Java 堆空间的 OOM 错误,并且绝对不能保证您能够恢复。如果你在Java堆之外有一个OOM,那么这个降落伞技巧将无济于事。
所以我试图弄清楚:真的有像文档所说的那样的默认值吗?如果是这样,为什么我会得到“降落伞不存在”?
我应该定义降落伞吗?我应该在那里放什么值?哪些参数在确定此参数的值中起作用?(并发连接数?请求的预期大小?总堆?)
这个降落伞到底做了什么?
谢谢!