我們有一個代理服務,它執行以下操作 1.調用後端服務以獲取客戶端ID 2.使用爲該客戶端ID配置的端點(客戶端端點)並將原始請求轉發給該終點。 3.返回對請求的響應wso2 esb中的故障轉移配置
之前我們在將請求轉發到客戶端端點(步驟2)時將OUT_ONLY屬性設置爲true。 但是,我們現在必須爲客戶端端點使用故障轉移端點配置。所以我們刪除了OUT_ONLY屬性並使用了 下面的故障轉移配置。客戶端端點不會爲轉發的請求返回任何響應。 由於這個原因,獲得註冊的回調沒有得到任何響應,隨後被Timeouthandler清除。 最近我們正面臨ESB拋出的一些CPU尖峯和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>