首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程主机强制关闭了WSO2 ESB HTTP连接

远程主机强制关闭了WSO2 ESB HTTP连接
EN

Stack Overflow用户
提问于 2014-01-24 08:13:24
回答 2查看 1.5K关注 0票数 1

我们使用WSO2 ESB来克隆SOAP请求,并将SOAP请求广播到托管在IIS上的所有web服务。最近,我们转向了nhttp传输。它被配置为推荐的这里,但每次在不活动期间之后,我们都会在wso.log中包含一个异常

代码语言:javascript
复制
[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'。似乎WSO2 ESB并没有关闭所有已打开的套接字连接,而是在超时期结束时使用了它。

有办法避免这种例外吗?它似乎没有造成一些性能缺陷,但在错误日志中看起来非常混乱。

我们负责线程计数和超时的配置如下:

nhttp.properties文件:

代码语言:javascript
复制
http.socket.timeout=120000
nhttp_buffer_size=16384
http.tcp.nodelay=1
http.connection.stalecheck=0
http.block_service_list=false

synapse.properties文件:

代码语言:javascript
复制
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 
EN

回答 2

Stack Overflow用户

发布于 2015-10-05 14:45:58

默认情况下,WSO2 ESB将使用“KEEPALIVE”作为连接。当后端(例如IIS)不使用“KEEPALIVE”时,这将导致“现有连接被远程主机强制关闭”错误消息。使用以下属性禁用“KEEPALIVE”:

代码语言:javascript
复制
<property name="NO_KEEPALIVE" value="true" scope="axis2" type="STRING"/>

这可能并不直观,但这个“属性”条目被插入到您所连接的后端服务的代理服务的"in“序列中。作者似乎在寻找一个.properties文件中更全局的设置。有,但nhttp.properties和synapse.properties都没有。它将是carbon_home/repository/conf/passthru-http.properties中的设置,并将以下设置设置为禁用保活: http.connection.disable.keepalive=true

票数 1
EN

Stack Overflow用户

发布于 2014-01-24 11:52:25

AFAIU,您的后端服务(部署在IIS上)未能在指定的超时值内响应.这意味着,异常是一个有效的方案,因为后端服务器关闭套接字连接。

我认为你应该检查一下为什么后端服务没有及时响应。你知道原因吗?

顺便问一下,我想您正在使用ESB 4.6.0吗?我建议您使用最新的ESB (4.8.0版本),因为它有很多修复,特别是在传递传输方面。

通过传输比nhttp传输性能更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21327584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档