7

我正在使用 Spring 和 Tomcat 6 开发 Web 应用程序。有时,由于某种原因,请求需要很长时间才能完成,并且会降低服务器的性能。是否可以限制 Tomcat 6 或 Spring 中的请求执行时间?欢迎使用其他有关此问题的方法。谢谢。

4

3 回答 3

1

使用 HttpConnector 配置connectionTimeout

修改你的 server.xml

<Connector ... connectionTimeout="xxxx"

其中xxxx是毫秒数

于 2013-01-28T09:09:17.563 回答
0

是否可以限制 Tomcat 6 或 Spring 中的请求执行时间?

是的,这是可能的,但您需要自己实现。

基本思想是请求方法需要使用aTimer来为自己安排一个未来N秒的中断。然后它需要在请求处理过程中定期检查是否被中断。最后,如果它在超时之前完成,它需要取消定时器。


以上假设是 servlet 应该限制它花费在处理请求上的时间。相反,如果您想在客户端实现超时,则很容易在请求完成时设置超时;例如,请参阅Tomcat 请求超时

(但是客户端超时的问题是服务器不会知道客户端已经放弃等待,并且无论如何都会继续处理请求。这很容易陷入大问题。想象一个请求需要完成时间比超时要长得多,再加上客户端反复重试已超时的请求...)

于 2013-01-28T09:09:55.067 回答
0

Sthepen 的上述说法是不正确的。在客户端,当它放弃或浏览器关闭时,浏览器当然不会保持其套接字活动。它会关闭套接字(恢复内存和端口,对吗?)。关闭程序将发送确定的信号到服务器端套接字 - 我相信是 RST。

于 2015-07-25T06:22:44.750 回答