![]() |
1
1
我认为Tomcat不会检测到无限循环。如果servlet没有用它的循环消耗所有的CPU时间,那么可以使用Tomcat管理器来停止servlet。否则,重新启动服务器可能是最安全和最容易的。 这就是为什么在部署应用程序之前在本地执行大量测试的原因;-)并且要非常小心地确保所有循环都有退出条件… |
![]() |
2
1
不确定Tomcat是否有这样的检测,但例如WebSphere的Web容器有。 但是,很明显,容器检测“挂起”线程需要相当长的时间。这样的代码可以很容易、快速地杀死负载下的服务器。 |
![]() |
3
1
如果无限循环是由无限重定向引起的,那么它迟早会用StackOverflowException终止该请求。 它是一个“真正的”无休止的循环,你可能会永久地占用一个CPU/核心,最终导致整个应用程序崩溃而没有内存异常。 据我所知,Tomcat没有对这些问题进行明确的检测。 |
![]() |
4
0
我想您可以使用适当的超时设置来处理这个问题: http://tomcat.apache.org/connectors-doc/generic_howto/timeouts.html |
![]() |
5
0
WebLogic可以检测卡住的线程: http://edocs.bea.com/wls/docs81/perform/WLSTuning.html#1125714 不过,在《汤姆猫》里没见过这个。 |