繁体   English   中英

如何配置tomcat处理错误的HTTP客户端?

[英]How do I configure tomcat to handle bad HTTP clients?

我们正在运行jBoss 5.1,它又使用Tomcat servlet容器。

我们一直在看到坏的HTTP客户端会打开套接字,发出HTTP请求,无法读取所有数据以及无法关闭连接的情况。

结果是tomcat线程无限期地试图写入输出流而阻塞:

SocketOutputStream.socketWrite0(FileDescriptor, byte[], int, int) 
SocketOutputStream.socketWrite(byte[], int, int) 
SocketOutputStream.write(byte[], int, int)  
InternalOutputBuffer.realWriteBytes(byte[], int, int) 
ByteChunk.flushBuffer()
ByteChunk.append(byte[], int, int)
InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(ByteChunk, Response)
IdentityOutputFilter.doWrite(ByteChunk, Response)
InternalOutputBuffer.doWrite(ByteChunk, Response) 
Response.doWrite(ByteChunk)
OutputBuffer.realWriteBytes(byte[], int, int) 
ByteChunk.append(byte[], int, int) 
OutputBuffer.writeBytes(byte[], int, int) 
OutputBuffer.write(byte[], int, int)    
CoyoteOutputStream.write(byte[], int, int)

如何配置这些连接超时?

您可以将Apache放在前面。 说真的

使用默认连接器时似乎没有任何超时。 NioConnector似乎确实有写超时(尽管与此相关的源代码中有一些TODO注释)。

因此,如果您想进行一些测试,请使用NioConnector,并设置未记录的“ timout”选项-源代码可能意味着disableUploadTimeout必须为“ false”才能生效。

基本上,在server.xml中,将http Connector元素更改为如下所示:

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 
  timeout="60000"
  disableUploadTimeout="false"        
  connectionTimeout="20000" 
  redirectPort="8443" />

(从默认的tomcat 6.0.20 server.xml文件中,添加了timeout和disableUploadTimeout属性,并且协议属性更改为“ org.apache.coyote.http11.Http11NioProtocol”)

mod_jk似乎确实有一些超时设置,并且应该比mod_proxy与apache更紧密地协作。

此页面上是否有任何有关超时的帮助? http://tomcat.apache.org/connectors-doc/generic_howto/timeouts.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM