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