【发布时间】:2018-02-21 20:42:57
【问题描述】:
我有一个 BPS 进程,它可以快速执行大量对 ESB 代理的调用。 ESB 代理调用一个 ESB API,它调用我们自己产品的 API。
在等待 ESB 的响应时,BPS 进程通常会暂停 3 分钟。 3分钟后,一切都在继续,好像什么都没发生一样。使用 Wireshark 和一些额外的日志中介,我发现了以下内容:
- 挂起发生在 ESB 代理中,就在输出序列之前。
- 根据 Wireshark 的说法,当挂起发生时,ESB API 已经将其响应发送到 ESB 代理。
这个挂起正好需要 3 分钟的事实应该是一个提示。我在配置文件中搜索了指定 180 秒的任何内容,但唯一的是 http 套接字超时和 http transportReceiver 的 threadKeepAliveTime。如果我减少这些,BPS 会抛出 p2p 通信错误而不是继续。对我来说,这表明后台某处的某处仍然导致某些呼叫延迟 3 分钟。
顺便说一句,仅某些特定呼叫不会发生挂起。我已经测试了好几次,每次都执行完全相同的调用,我无法预测哪个调用会挂起,或者即使任何调用都会挂起。
【问题讨论】:
-
BPS收到响应后是否断开连接?
-
您发送什么类型的请求:PUT、POST?您是否在没有请求正文的情况下发送它们?
-
@simar: 挂起后,BPS 收到正确的呼叫响应,并继续该过程,就好像什么都没发生一样。我已通过在 BPS 中启用跟踪来验证这一点。
-
@thanuja 我正在发送带有正文的 POST 请求
-
如果你还没有这样做,试试这个:stackoverflow.com/questions/34722299/…
标签: wso2 wso2esb wso2bps wso2ei