私のwcf wshttpサービスがデータの処理を終了すると異常な動作に陥っています(私は人のリストを返す前にメッセージを記録します。クライアントは応答を受信せず、そこに「ハング」します。タイムアウトを2時間に増やしました。サービスが20分後にデータの取得を完了しても、クライアントは2時間ハングしてからタイムアウト制限に達し、タイムアウト例外を受け取ります。おそらく推測しているように、私はサービスから多くのデータ(約5万の複雑なオブジェクト)を返しています。私はシリアル化したいすべての[DataContract]属性を持っています。WCFサービスは応答を送信しませんが、どちらもエラーは発生しません。
トラブルシューティング私がやった:我々のテスト環境では
を、サービスが20分後に毎回、リターンを動作するようです。
私たちのプロダクションサーバは、上記の問題をランダムに実行します。場合によっては20分後に復帰することもありますが、サービスが実際に終了してから1時間40分後にクライアントにタイムアウトエラーが発生することがあります。
私はwcfトレースを有効にして、最後にトレースするのはClose ClientBaseステートメントです。これはメソッドから戻る前に私が最後に行うことです(その直後のログステートメントを除く)。
大部分の設定を最大値に設定して、返される大きなデータセットを処理しました。
これはサーバー/ネットワークの問題ですか?この問題を追跡するために私が取ることができる他のステップはありますか?
サービスはIIS7のWindows Server 2008 R2でホストされています。 .netフレームワークを使用して4.5.2。
レスポンスのレコード数を減らし、ネットワークの問題であるかどうかを常に確認できるようにします。タイムアウトかどうかを調べるために、1000レコードの戻り値から始めます。 1000はちょうど乱数ですが、私はあなたがポイントを得ることを願って – snit80
私はそれを試したと言いました。大規模なデータや長時間実行されるリクエストとは何か... –
原因を見つけたと思います。私たちのロードバランサーに見えます。応答サイズの制限があるかどうかわからないが、ロードバランサを使用しないことでこの問題を回避している。ロードバランサへの解決策を見つけることができれば幸いです。 –