我有一个 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 分钟。
顺便说一句,仅某些特定呼叫不会发生挂起。我已经测试了好几次,每次都执行完全相同的调用,我无法预测哪个调用会挂起,或者即使任何调用都会挂起。