为什么Oracle OSB Business Service请求外部Web Service耗时过长?
问题根因排查方案
从你提供的Business Service配置来看,最可能导致20秒延迟的是重试策略配置,可按以下优先级排查:
- 第一优先级:校验重试配置
你的配置中设置了最多重试5次、每次重试间隔5秒,且开启了应用级错误重试开关。如果首次请求触发了重试条件(比如偶发超时、返回SOAP Fault等应用错误),经过多次重试后才拿到正确响应,累计耗时刚好符合你观测到的20秒左右的水平。
验证方法:临时将重试次数改为0,关闭应用错误重试开关,再次测试耗时。如果耗时降到1秒左右即可确认是重试导致的延迟,再进一步排查首次请求失败的具体原因,比如首次请求的HTTP头不符合远端要求、SSL握手偶发失败等。 - 第二优先级:调整结果缓存配置
你当前开启了结果缓存功能,如果缓存键规则配置错误,会导致每次请求都需要额外执行缓存校验、缓存写入逻辑,极端情况下也会增加不必要的耗时。
验证方法:临时关闭结果缓存,测试耗时是否有明显下降。 - 第三优先级:检查传输层配置
- 你配置的HTTP请求超时和连接超时均为15秒,如果OSB到远端服务的网络存在偶发丢包,首次请求接近15秒超时阈值时触发重试,也会导致总耗时拉长。
- 确认OSB所在服务器是否配置了全局HTTP代理,导致请求转发路径和SoapUI测试时不同。
- 确认OSB的JVM是否开启了SSL证书吊销检查,该配置会导致每次HTTPS请求都额外发起CRL/OCSP查询,大幅增加耗时,而SoapUI默认关闭该检查。
- 第四优先级:修正配置拼写错误
配置中session-sctikiness存在拼写错误(正确应为session-stickiness),错误的配置项可能导致传输层参数加载异常,可修正拼写后重新发布BS测试。
内容的提问来源于stack exchange,提问作者Julian David
相关产品推荐
相关产品推荐

