我正在使用Spring和Tomcat 6开发Web应用程序。有时,由于某种原因,请求需要很长时间才能完成,这会降低服务器的性能。是否可以限制Tomcat 6或Spring中的请求执行时间?关于这个问题的其他方法是受欢迎的。感谢。
答案 0 :(得分:1)
是否可以在Tomcat 6或Spring中限制请求执行时间?
是的,这是可能的,但您需要自己实现。
基本思想是请求方法需要使用Timer
为将来的N秒安排中断。然后,它需要在请求处理期间定期检查以查看它是否已被中断。最后,如果计时器在超时之前完成,它需要取消计时器。
以上假设servlet应该限制处理请求所花费的时间。如果您想在客户端实现超时,则很容易在请求完成时设置超时;例如见Tomcat request timeout。
(但是客户端超时的问题是服务器不知道客户端已经放弃等待,并且将继续处理请求。很容易遇到这个问题。想象一下请求比超时花费更长的时间来完成,并与反复重试已超时的请求的客户端相结合...)
答案 1 :(得分:0)
使用HttpConnector配置connectionTimeout
修改您的server.xml
<Connector ... connectionTimeout="xxxx"
其中 xxxx 是毫秒数
答案 2 :(得分:0)
Sthepen的上述陈述不正确。在客户端,当它放弃或者关闭浏览器时,浏览器当然不会使它的套接字保持活动状态。它执行套接字关闭(恢复内存和端口,对吧?)。关机程序会将放下的信号发送到服务器端插座 - 我相信RST。