API管理サービスで公開されているHttpClient APIを使用して、Azure関数呼び出しServiceファブリックAPIを持っています。ただし、API管理サービスログには、API呼び出しが問題ID「ClientConnectionFailure at forward-request」で失敗したことが示されています。
クライアントサイドで、エラーメッセージ「操作はキャンセルされました。トランスポート接続からデータを読み取れません:スレッドの終了またはアプリケーションの要求により、I/O操作が中止されました。スレッドの終了またはアプリケーションの要求により、I/O操作が中止されました
この失敗の考えられる理由は何ですか?それを修正するには?残念ながら、これに関する十分なドキュメントが見つかりませんでしたか?
まず、APIMには、ブラウザやその他のツールであるクライアント、リクエストをバックエンドに転送するAPIMプロキシ、およびアプリケーションをホストするバックエンドがあることを理解する必要があります。
クライアント接続の失敗の背後にある理由は、クライアントがAPIMプロキシから応答を受信する前に接続をドロップしたためです。
2つの理由により、クライアントが接続をドロップする可能性があります
APIMゲートウェイでの負荷が大きいためにAPIMゲートウェイの応答に時間がかかるか、APIMインスタンスがバックエンドにポイントしているため、APIMゲートウェイに転送されたリクエストを処理するのに十分な処理バウアーがないため、クライアントがタイムアウトします。
クライアントは、APIMプロキシから応答を受信している間に、何らかの理由で接続をドロップします。
これを引き起こしている理由を特定し、それに基づいて、クライアントを修正するか、APIMまたはバックエンドを解放することで対応する必要があります。
同様の問題がありました。私の場合、営業担当者がクライアントであり、私はこのエラーを頻繁に観察しました。営業から5秒以内に応答がない場合、営業担当者は接続を閉じます。これはAPIMレベルで要求を失敗させ、エラー「ClientConnectionFailure at forward-request」が観察されます。
クライアントが応答を待つ時間を確認してください。 APIMがそれより長くかかる場合も同じ問題です。
これに対応するには、クライアント側の待機時間を増やすか、APIMの応答時間の改善に取り組む必要があります。