BonCode连接器,IIS 7.5& Tomcat 8,慢&间歇性请求超时错误

时间:2017-05-18 16:47:16

标签: iis-7.5 tomcat8

我在IIS 7.5上安装了一个JSP Web应用程序。在Win 2008 R2 64位上通过BonCode AJP13 v1.0.26进行Tomcat 8.0.30。

到目前为止,这已经好几个月了。

我们有相同的环境:开发,分期和生产

在开发和登台环境中,突然间,我们的响应速度非常慢,在某些情况下,间歇性的IIS会产生超时错误:

Request timed out
Exception Details: System.Web.HttpException: Request timed out.
[HttpException (0x80004005): Request timed out.]

在生产环境中,性能似乎没问题。

尝试重新启动服务器,重新启动IIS,重新启动Tomcat等

有人有这些减速吗?

是否有人使用BonCode的已知工作版本大于1.0.26?

详情

绕过IIS& BonCode,即明确选择端口8080,提供即时响应。

http://<domain>:8080/<path>

减速不是JSP页面特定的。 甚至非常简单的页面,例如获取日期和时间时间,仍然间歇性地给出缓慢的反应。

Tomcat / JSP web-app上没有身份验证。

与IIS 7.5驻留在同一服务器上的单个Tomcat实例 即没有负载平衡等。

仅使用普通HTTP 即不是HTTPS,也没有相关的证书。

服务器诊断

  • BonCode日志

偶尔会看到:

2016-02-29 15:59:01 1.0.26 ERROR 
TCP Client level -- Server/Port:localhost/8009
Value cannot be null.
Parameter name: buffer
2016-02-29 15:59:01 One Connection raised an error

但通常没有显示相关的错误/警告

与旧日志比较

旧日志

2017-05-04 10:19:28 New Connection 46 of 0 to tomcat: 127.0.0.1:8009 ID: 46 [T-5]
2017-05-04 10:19:35 New Connection 47 of 0 to tomcat: 127.0.0.1:8009 ID: 47 [T-45]
2017-05-04 10:25:11 New Connection 48 of 0 to tomcat: 127.0.0.1:8009 ID: 48 [T-45]
2017-05-04 10:25:15 New Connection 49 of 0 to tomcat: 127.0.0.1:8009 ID: 49 [T-49]
2017-05-04 10:39:12 New Connection 50 of 0 to tomcat: 127.0.0.1:8009 ID: 50 [T-49]
2017-05-04 10:40:09 New Connection 51 of 0 to tomcat: 127.0.0.1:8009 ID: 51 [T-22]
2017-05-04 10:41:29 New Connection 52 of 0 to tomcat: 127.0.0.1:8009 ID: 52 [T-49]
2017-05-04 10:42:03 New Connection 53 of 0 to tomcat: 127.0.0.1:8009 ID: 53 [T-52]
2017-05-04 11:05:04 New Connection 1 of 0 to tomcat: 127.0.0.1:8009 ID: 1 [T-20]
2017-05-04 11:06:37 New Connection 2 of 0 to tomcat: 127.0.0.1:8009 ID: 2 [T-23]
2017-05-04 11:07:23 New Connection 3 of 0 to tomcat: 127.0.0.1:8009 ID: 3 [T-51]
2017-05-04 11:08:55 New Connection 4 of 0 to tomcat: 127.0.0.1:8009 ID: 4 [T-23]
2017-05-04 11:09:17 New Connection 5 of 0 to tomcat: 127.0.0.1:8009 ID: 5 [T-51]

新记录

2017-05-16 14:31:57 New Connection 200 of 0 to tomcat: 127.0.0.1:8009 ID: 200 [T-153]
2017-05-16 14:31:58 New Connection 201 of 0 to tomcat: 127.0.0.1:8009 ID: 201 [T-153]
2017-05-16 14:32:30 New Connection 202 of 0 to tomcat: 127.0.0.1:8009 ID: 202 [T-153]
2017-05-16 14:36:05 New Connection 204 of 0 to tomcat: 127.0.0.1:8009 ID: 204 [T-153]
2017-05-16 14:36:06 New Connection 205 of 0 to tomcat: 127.0.0.1:8009 ID: 205 [T-153]
2017-05-16 14:41:38 New Connection 206 of 0 to tomcat: 127.0.0.1:8009 ID: 206 [T-153]
2017-05-16 14:42:51 New Connection 207 of 0 to tomcat: 127.0.0.1:8009 ID: 207 [T-153]
2017-05-16 14:42:52 New Connection 208 of 0 to tomcat: 127.0.0.1:8009 ID: 208 [T-153]
2017-05-16 14:43:12 New Connection 209 of 0 to tomcat: 127.0.0.1:8009 ID: 209 [T-153]
2017-05-16 14:43:40 New Connection 210 of 0 to tomcat: 127.0.0.1:8009 ID: 210 [T-153]

在旧日志中,连接ID似乎在~20-80之后重置,每个连接使用一系列线程,偶尔使用相同的线程。

在新的日志中,随着速度减慢,连接ID会更高,并且似乎使用相同的线程。

  • Tomcat日志

没有错误,正如预期的那样,servlet / JSP请求没有被转发。

配置文件

BonCode - BonCodeAJP13.settings

<Settings>
   <Port>8009</Port>
   <Server>localhost</Server>   
   <MaxConnections>0</MaxConnections>
   <LogLevel>2</LogLevel>
   <LogDir>E:\inetpub\logs\BonCode</LogDir>
   <FlushThreshold>0</FlushThreshold>
   <EnableRemoteAdmin>False</EnableRemoteAdmin>
   <HeaderBlacklist>AUTHORIZATION,URL,SERVER_SOFTWARE,SERVER_NAME,SERVER_PROTOCOL</HeaderBlacklist>
   <PacketSize>65536</PacketSize>
</Settings>

Tomcat - server.xml

...
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" 
           packetSize="65536" />
...

备注

我知道BonCode v1.0.26现已更新到v1.0.36,但新版本已经推出了大约10天。

如果我没有到达任何地方,我会升级,但我可以在生产环境中做些限制。

2 个答案:

答案 0 :(得分:1)

长期:升级计划。你回来了10个版本。

很可能你正在耗尽AJP连接的数量。 我会调整Tomcat连接和超时参数以删除卡住的连接:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" keepAliveTimeout="-1" connectionTimeout="60000" maxThreads="1000" packetSize="65536" />

最佳, 布赖恩

答案 1 :(得分:0)

对于Tomcat,如果未指定maxThreads,则默认为200。 Tomcat 8 docs

对于BonCode,如果MaxConnections = 0,则不使用连接池,但BonCode将为每个请求创建新连接。

来自BonCode源代码:

...
p_Logger.LogMessage(String.Format("New Connection {0} of {1} to tomcat: {2} ID: {3} [T-{4}]", p_ConcurrentConnections, BonCodeAJP13Settings.MAX_BONCODEAJP13_CONCURRENT_CONNECTIONS, p_TCPClient.Client.RemoteEndPoint.ToString(), p_ThisConnectionID, AppDomain.GetCurrentThreadId()), BonCodeAJP13LogLevels.BONCODEAJP13_LOG_BASIC);
...

从此,我希望BonCode连接ID达到&amp;达到峰值200。

此外,AppDomain.GetCurrentThreadId())已弃用,不应依赖它来提供线程ID。

查看更多BonCode日志:

2017-05-16 15:44:27 New Connection 190 of 0 to tomcat: 127.0.0.1:8009 ID: 190 [T-153]
2017-05-16 15:44:28 New Connection 192 of 0 to tomcat: 127.0.0.1:8009 ID: 192 [T-153]
2017-05-16 15:44:29 New Connection 194 of 0 to tomcat: 127.0.0.1:8009 ID: 194 [T-153]
2017-05-16 15:44:43 New Connection 196 of 0 to tomcat: 127.0.0.1:8009 ID: 196 [T-153]
2017-05-16 15:44:44 New Connection 198 of 0 to tomcat: 127.0.0.1:8009 ID: 198 [T-153]
2017-05-16 15:45:08 New Connection 200 of 0 to tomcat: 127.0.0.1:8009 ID: 200 [T-153]
2017-05-16 15:45:30 New Connection 201 of 0 to tomcat: 127.0.0.1:8009 ID: 201 [T-153]
2017-05-16 15:46:58 New Connection 203 of 0 to tomcat: 127.0.0.1:8009 ID: 203 [T-153]
2017-05-16 15:48:47 New Connection 204 of 0 to tomcat: 127.0.0.1:8009 ID: 204 [T-153]
2017-05-16 15:49:16 New Connection 205 of 0 to tomcat: 127.0.0.1:8009 ID: 205 [T-153]
2017-05-16 15:53:54 One Connection raised an error
2017-05-16 15:59:56 New Connection 206 of 0 to tomcat: 127.0.0.1:8009 ID: 206 [T-152]
2017-05-16 15:59:57 New Connection 207 of 0 to tomcat: 127.0.0.1:8009 ID: 207 [T-152]
2017-05-16 16:05:37 One Connection raised an error

不确定为什么在连接201处没有引发错误,但看起来BonCode连接正在耗尽,未被关闭和/或正在达到Tomcat最大线程数。

升级到v1.0.36并查看会发生什么