为了账号安全,请及时绑定邮箱和手机立即绑定

Tomcat请求超时

Tomcat请求超时

明月笑刀无情 2019-12-13 15:10:34
在我的Web应用程序中,有些请求的持续时间超过20秒。但是在某些情况下,代码可能导致无限循环或类似事件,从而减慢服务器速度。我想在服务器端放置60秒的请求超时。这是在tomcat中实现的吗?谢谢你,Horatiu
查看完整描述

3 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

如果您试图阻止请求运行太长时间,那么在Tomcat中设置超时将无济于事。正如克里斯所说,您可以为Tomcat设置全局超时值。但是,从“ Apache Tomcat连接器-通用方法超时”中,请参阅“答复超时”部分:


JK还可以对请求答复使用超时。此超时不能衡量响应的完整处理时间。而是控制连续响应数据包之间的时间间隔是多少。


在大多数情况下,这是人们真正想要的。考虑长时间运行的下载。您将无法设置有效的全局回复超时,因为下载可能会持续几分钟。但是,大多数应用程序在开始返回响应之前的处理时间有限。对于这些应用程序,您可以设置一个明确的答复超时。与答复超时不协调的应用程序是批处理类型的应用程序,数据仓库和报告应用程序,它们预计将需要较长的处理时间。


如果JK中止了等待响应的时间,因为触发了回复超时,则无法停止后端的处理。尽管您释放了Web服务器上的处理资源,但是请求将继续在后端运行-一旦触发了回复超时,将无法发送任何结果。


因此,Tomcat将检测到该servlet在超时时间内未响应,并将回发给用户,但不会停止线程的运行。我认为您无法实现自己想做的事情。



查看完整回答
反对 回复 2019-12-14
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

您可以在server.xml中设置默认超时


<Connector URIEncoding="UTF-8" 

    acceptCount="100" 

    connectionTimeout="20000" 

    disableUploadTimeout="true" 

    enableLookups="false" 

    maxHttpHeaderSize="8192" 

    maxSpareThreads="75" 

    maxThreads="150" 

    minSpareThreads="25" 

    port="7777" 

    redirectPort="8443"/>



查看完整回答
反对 回复 2019-12-14
  • 3 回答
  • 0 关注
  • 255 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信