【转】https://segmentfault.com/q/1010000011412748
在tomcat的配置文件server.xml中,可以设置Connector的参数,其中包含超时参数connectionTimeout。
apache官网对于这些参数的解释:https://tomcat.apache.org/tom...
本人对其中几个重要参数大致理解为(应该理解错了):
对这些参数进行测试,然而遇到了疑惑。
设置:
connectionTimeout为10000,
maxConnections为2,
maxThreads为2,
acceptCount为2。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="10000" redirectPort="8443" maxConnections="2" maxThreads="2" acceptCount="2"/>
写一个controller测试,sleep30s。
@RequestMapping(value = "sync") @ResponseBody public String sync() throws InterruptedException { Thread.sleep(30000L); return "test success"; }
使用JMeter进行测试。
测试结果,尝试三次都一致,如下:
一共20次请求,失败14个。
前两个请求,的确是在30s之后返回。
失败的14个请求,都在52s左右。
最后四个成功的请求,前两个在60s时返回,后两个在90s时返回。符合sleep30s的时间点。
分析:
疑问:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="10000" redirectPort="8443" maxConnections="10" maxThreads="2" acceptCount="5"/>
其中设置:
connectionTimeout为10000,
maxConnections为10,
maxThreads为2,
acceptCount为5。
仍发起20次请求,共失败5次
失败的4次请求,仍然是在52s左右失败。
之后的请求返回时间符合每30s返回两个的预期。
分析:
疑问:
其他几个参数理解是否正确?
Tomcat server.xml中配置的connectionTimeout参数无效?客户端等待超时时间
原文:https://www.cnblogs.com/achengmu/p/13042065.html