我正在更新Tomcat 9中conf / server.xml中的默认条目,以便在1秒后对请求超时,但我没有在浏览器中看到此更改的影响。
我希望在F12开发人员工具网络选项卡中看到500内部服务器错误,但是在超过1秒的请求中,状态将恢复为200.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="1000"
redirectPort="8443" />
我已通过将connectionTimeout
设置为a
(无效值)来检查是否正在读取server.xml,并在日志中看到有关此设置的警告。此外,我通过发出命令catalina.bat start -config \conf\server.xml
来确保使用所需的server.xml。
请告诉我。
答案 0 :(得分:1)
我不确定你到底要做什么。您似乎希望在服务器回复请求所花费的时间设置超时。
大致发生了什么:
据我所知,connectiontimeout是第1点和第2点之间发生的事情(粗略地说,细节稍微复杂一些)。因此,服务器的响应时间与此无关。它只是浏览器与服务器建立连接和发送请求之间的时间。因此,如果您需要基于服务器响应时间的内容,则表明您没有使用正确的属性。
现在,通常,人们并没有真正设置响应的超时,但是消费者(在这种情况下是浏览器)会设置超时。例如,我的浏览器设置超时为300秒。我已经在文档中查了一下,你可能会对工作人员设置回复时间,但我还没有对此进行测试,我不确定它是否可行。
更重要的是,为什么要在响应上设置超时?在处理可能需要很长时间的请求时,是否有一些调用(数据库,Web服务,...)?在这种情况下,您应该只在该呼叫上设置超时。这将允许您记录错误,并立即给出500错误。如果您恰好正在永远处理,您可能想要中断并停止该过程并返回错误并再次潜在地记录信息,以便您知道它出错的地方。总之,控制等待外部资源的反馈和Web应用程序中的处理时间,而不是尝试在Web服务器上设置响应超时。
答案 1 :(得分:0)
对于超过1秒的请求,状态将恢复为200.
所以?您似乎对此设置的作用有误。来自documentation:
connectionTimeout
接受连接后,此连接器将等待呈现请求URI行的毫秒数。
您写道:
[我]没有在浏览器中看到此更改的影响。
您无法在浏览器中看到此更改的效果,因为您无法控制浏览器在创建连接后呈现请求URI行所需的时间。
在你通过'超时请求'来定义你的意思之前,我无法回答你的三个问题。