次のことを行うプロキシサービスがあります。1。バックエンドサービスを呼び出してクライアントIDを取得します。2。そのクライアントID用に構成されたエンドポイント(クライアントエンドポイント)を使用し、元の要求をそのエンドポイントに転送します。3.リクエストへの応答を返します
以前は、リクエストをクライアントエンドポイントに転送するときにOUT_ONLYプロパティをtrueに設定していました(ステップ2)。ただし、クライアントエンドポイントにはフェールオーバーエンドポイント構成を使用する必要があります。そのため、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>