WSO2 ESB 5.0.0线程和类加载问题

时间:2017-04-06 15:43:49

标签: wso2esb

我在WSO2 ESB 5.0.0中有一个简单的passthrough代理到WSO2 DSS。当我使用esb代理时,加载的实时踏板类增加,直到WSO2 ESB发生故障。当esb发生故障时,有284个线程和14k个类加载。如果我直接使用DSS,dss不会崩溃,最大线程加载104和9k类。

如何强制esb释放该资源,或者改进esb如何处理esb中的http连接?看起来像僵尸连接永远不会释放线程。

任何有助于集中解决问题的帮助?

1 个答案:

答案 0 :(得分:1)

没有看到类加载和线程数的问题。我刚刚完成测试新安装的WSO2ESB服务器。

  • WSOESB版本5.0.0
  • java8
  • Windows 8
  • Esb服务器也安装了DSS功能。
  • 通过http1.1协议调用DSS服务。
  • DSS服务有长时间运行的查询(超过10秒)
  • 超过150的ESB服务同时请求的总数

超过550个超过15000个线程的已加载类的总数。即使在这个高负载下,也没有像你提到的任何发行者。

我实际建议的是检查你如何向esb服务发出http请求。它对内容类型,编码等标题很敏感。使用apache httpclient(4.5)

花了很长时间才能找到如何正确调用esb上的soap服务

最终可能会发现问题。问题出在DSS和ESB服务器之间。根据源代码,当DSS服务器向ESB服务器写入响应之前,当DSS服务器读取esb发送请求并且DSS服务器读取请求但DSS服务器连接关闭时,会发生此类错误。然后esb服务器报告关于您提到的问题的消息

SourceHandler

...
 } else if (state == ProtocolState.REQUEST_DONE) {
            isFault = true;
            log.warn("Connection closed by the client after request is read: " + conn);
        }

易于重现启动esb和dss服务器。开始在ESB上向passthrough代理发送大量请求(对DSS服务的代理请求),关闭DSS服务器,你会看到很多

WARN - SourceHandler Connection closed by the client after request is read:   http-incoming-1073 Remote Address

这可能是网络发行者,防火墙或WsoDSS服务器有套接字超时,默认为180秒。