在试验我的JBoss 5.1服务器之后,我注意到如果当前线程是最后一个可用的,HTTP响应包含Connection: close
标头。
例如,如果我在the HTTP connector config中设置maxThreads="4"
并执行4个以上的同时请求,那么:
Connection
标题(表示连接可以是reused by the client for future requests)Connection: close
标头(意味着客户端必须在不同的端口上为下一个请求创建新连接)我找不到任何相关文档。这种行为是在某处解释的吗?是否可以避免它(即阻止此Connection: close
标头),以便客户端可以重用套接字以用于将来的请求?
答案 0 :(得分:0)
我快速浏览了Tomcat code(Jboss的Web容器是JbossWeb的基础)。
如果允许连接保持活动状态,它会在Http11Processor中显示从进程方法返回。因此,当连接打开时,保持活动连接正在使用HTTP池的线程。
为了防止池被非活动的保持连接清空,线程池很可能(我已经发现可能在PooledSender中执行的代码的某些部分)禁用了保留池的可能性在开始处理新请求之前,为其池中的最后一个线程打开连接。否则,通过创建有限数量的保持活动连接来阻止Tomcat / Jboss将非常容易。