我们正在使用WSO2
ESB
克隆并将SOAP请求广播到我们在IIS
上托管的所有Web服务。最近我们切换到nhttp
运输。它被配置为推荐here但不活动期后,每次我们wso.logWSO2 ESB HTTP连接被远程主机强制关闭
[HTTP Sender I/O dispatcher-4] ERROR ClientHandler I/O error : An existing connection was forcibly closed by the remote host For : 127.0.0.1:4148
java.io.IOException: An existing connection was forcibly closed by the remote host
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:197)
...
活动周期的长短取决于在IIS中配置为特定的Web服务'Connection Time-out value'
encount异常。看起来像WSO2 ESB并没有关闭所有打开的套接字连接,并且在超时期限到期时IIS
取而代之。
是否有办法避免这种异常?它似乎没有造成一些性能缺陷,但在错误日志中看起来相当混乱。
我们的配置,负责线程数和超时情况如下:
nhttp.properties
文件:
http.socket.timeout=120000
nhttp_buffer_size=16384
http.tcp.nodelay=1
http.connection.stalecheck=0
http.block_service_list=false
synapse.properties
文件:
synapse.threads.core = 40
synapse.threads.max = 100
#synapse.threads.keepalive = 5
#synapse.threads.qlen = 10
#synapse.threads.group = synapse-thread-group
#synapse.threads.idprefix = SynapseWorker
synapse.sal.endpoints.sesssion.timeout.default=600000
synapse.global_timeout_interval=120000
后端服务是完全响应,异常中止期间发生的,毕竟响应已发送,并有来自WSO2 ESB没有其他请求一个Web服务连接超时期限。我会尝试4.8.0并检查在那里情况是否相同。 – user2547004
好的。我不确定这个问题。请尝试4.8.0并看看。同时,您可以禁用HTTP Keep-Alive并查看。 http://docs.wso2.org/display/ESB480/HTTP+Transport+Properties#HTTPTransportProperties-NOKEEPALIVE –