gpt4 book ai didi

performance - tomcat 7 - 性能 : Connector flag connectionTimeout

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:14 25 4
gpt4 key购买 nike

我在从 tomcat 5.5 迁移到 tomcat 7.0.37 时遇到了一个奇怪的行为。我使用标准的 https 连接器:

<Connector address="x.x.x.x" port="9090" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" SSLEnabled="true"
ciphers="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,
TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,
TLS_DHE_DSS_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"
URIEncoding="UTF-8" keystorePass="x" keystoreFile="x"
connectionTimeout="-1" maxPostSize="-1" />

设置标志 connectionTimeout="-1" 时,对 Tomcat 的每个请求都会导致 20%-30% 的处理器使用率。因此,在为任何类型的资源(简单的 html 页面、jar 文件)生成 5 个请求后,处理器使用率达到 100%。

当我删除 connectionTimeout="-1" 标志时,不会发生此行为。我使用标准的 Tomcat 7 配置。

谁能解释一下这是怎么回事?

最佳答案

我花了一分钟时间才弄明白这个问题。我也能够重现这个问题。看着 documentation用于 http 连接器。它并没有说你可以将它设置为 -1 但它也没有说你也不能。所以我深入研究了代码以确定。在代码中我发现了下面的(soTimeout = connectionTimeout)

if (soTimeout != null && soTimeout.intValue() >= 0)
socket.setSoTimeout(soTimeout.intValue());

所以基于 -1 永远不会被设置和 Socket java class正在使用默认设置。

如果您想要无限超时,请将其设置为 0(我不建议这样做,因为这会给您带来各种问题。)

编辑#1

稍微深入一点,似乎有一个 bug在 tomcat 中,我已报告并将在 7.0.42 之后。

关于performance - tomcat 7 - 性能 : Connector flag connectionTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15947555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com