我们有一个代理服务,它执行以下操作 1. 调用后端服务以获取客户端 ID 2. 使用为该客户端 ID 配置的端点(客户端端点)并将原始请求转发到该端点。3.返回对请求的响应
早些时候,我们在将请求转发到客户端端点时将 OUT_ONLY 属性设置为 true(步骤 2)。但是我们现在必须为客户端端点使用故障转移端点配置。所以我们删除了 OUT_ONLY 属性并使用了以下故障转移配置。客户端端点不会为转发的请求返回任何响应。因此,注册的回调没有得到任何响应,并且随后被 Timeouthandler 清除。最近,我们面临一些 CPU 峰值和 ESB 引发的 OutOfMemory 错误。我们怀疑突触回调处理程序正在使用大部分系统资源并且无法恢复。由于客户端端点没有返回响应,此配置是否会创建任何 OutOfMemory 错误(如果经过压力测试)?请建议。
<endpoint xmlns="http://ws.apache.org/ns/synapse" name="client_forward_endpoint_110">
<failover>
<endpoint name="primary">
<address uri="--primary endpoint--">
<enableAddressing />
<timeout>
<duration>30</duration>
<action>discard</action>
</timeout>
<markForSuspension>
<errorCodes>101504, 101505, 101500</errorCodes>
<retriesBeforeSuspension>3</retriesBeforeSuspension>
<retryDelay>1</retryDelay>
</markForSuspension>
<suspendOnFailure>
<initialDuration>1000</initialDuration>
<progressionFactor>2</progressionFactor>
<maximumDuration>64000</maximumDuration>
</suspendOnFailure>
</address>
</endpoint>
<endpoint name="secondary">
<address uri="--secondary endpoint--">
<enableAddressing />
<timeout>
<duration>30</duration>
<action>discard</action>
</timeout>
<markForSuspension>
<errorCodes>101504, 101505, 101500</errorCodes>
<retriesBeforeSuspension>3</retriesBeforeSuspension>
<retryDelay>1</retryDelay>
</markForSuspension>
<suspendOnFailure>
<initialDuration>1000</initialDuration>
<progressionFactor>2</progressionFactor>
<maximumDuration>64000</maximumDuration>
</suspendOnFailure>
</address>
</endpoint>
</failover>