WSO2 ESB 5.0.0 线程和 类 加载问题

WSO2 ESB 5.0.0 threads and classes loaded issue

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

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

对解决问题有帮助吗?

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

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

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

我真正推荐的是检查你如何向 esb 服务发出 http 请求。它对 headers 有点敏感,比如 Content-Type,编码。使用 apache httpclient (4.5)

找出如何在 esb 上正确调用 soap 服务花了很长时间

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

源处理器

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

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

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

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