我正在使用JBoss 4.0.4 GA,它有Tomcat Servlet Container 5.5。 我也将IIS 6.0重定向到这个JBoss。 (通过IIS tomcat连接器,用作IIS中的ISAPI筛选器)。 一切正常,按照描述配置工人。
这是连接器的一段workers.properties文件:
#
# Defining a worker named ajp13 and of type ajp13
# Note that the name and the type do not have to match.
#
worker.jboss0_ajp13.port=8009
worker.jboss0_ajp13.type=ajp13
worker.jboss0_ajp13.host=localhost
worker.jboss0_ajp13.socket_keepalive=1
worker.jboss0_ajp13.socket_timeout=300
但是当通过IIS(端口80)连接到应用程序时,对于HTTP请求的每个已完成的HTTP响应,套接字将关闭(FIN在TCP层上发送)。 这导致严重的减速,因为应用程序正在通过WAN工作。 (对于每个关闭的套接字,需要建立另一个套接字,需要500毫秒)。
直接连接到JBoss Web服务器时不会发生这种情况,并且在连接到IIS的同一WebServer实例上的其他虚拟目录时也不会发生这种情况(即IIS中的Keep-Alive也已配置)。
最新版本的tomcat IIS连接器会发生这种情况。
您知道连接器中是否有错误,或者我的配置是否有问题?
提前致谢,
亨利。
答案 0 :(得分:1)
我在Bugzilla中为tomcat IIS重定向器提交了一个错误,这就是我得到的答案:
直到1.2.27这是IIS连接器的行为(IIS强制所有 ISAPI扩展实现自己的HTTP保持活动,以及IIS连接器 没有这样做。)
在1.2.27中,实验性,构建时,对HTTP 1.1的支持 编码,应允许持久连接。 (我在生产系统中使用了大约相同的代码,大约4个 年,但它应该被认为是JK代码库中的实验,直到它 已经稳定了一段时间。)
从其中一个下载镜像中获取-chunked二进制文件并阅读有关如何操作的信息 在1.2.27发行说明中配置chunked编码(你必须得到 正确构建,并在您的配置中启用它)。 您可以验证连接器是否正在使用带有调试日志记录的分块编码 on,并且TCP / Wireshark跟踪应该显示正在重用的连接。
如果你仍然在关闭连接,并且日志显示了 连接器尝试(或应该尝试)分块编码,然后它 可能最好在用户列表上讨论,然后重新打开另一个 一旦确定存在问题,Wireshark跟踪+连接器调试日志。
所以,我做了什么:
使用以下命令配置isapi_redirect.properties:
enable_chunked_encoding=1
重新启动IIS。
答案 1 :(得分:0)
IIS可能正在关闭套接字。 JBoss和IIS 之间的连接与持久存在的HTTP套接字无关。确保将IIS配置为支持持久性HTTP / 1.1套接字。
但是,您指出IIS中的另一个虚拟目录没有相同的问题。这可能是特定虚拟目录出现问题的问题。但是, 也可以是IIS / Tomcat连接器中的东西。
要调查它是否是IIS / Tomcat连接器,请尝试设置
worker.jboss0_ajp13.connection_pool_size = 10 worker.jboss0_ajp13.connection_pool_timeout = 600
看它是否有任何区别。请参阅Tomcat Workers Docs(包括底部的“示例worker.properties”部分)。看看那里提到的任何参数是否可以帮助你。