タイトルを許してください、私が探しているものをどのように表現するか、または探しているものを知っているかどうかさえよくわかりません.
潜在的に大量のリクエストを同時に処理するサービスを実行しています。さらに、サービス内で、並行して実行している外部サービスに対して一定量 (通常は 10 ~ 15) の要求を行う必要があります。このコードは次のようになります。
Task<IResponse>[] tasks = new Task<IResponse>[Adapters.Count];
for(int i = 0; i < Adapters.Count;i++)
{
IAdapter adapter = Adapters[i];
Func<IResponse> makeExternalHttpRequest= () => adapter.MakeExternalHttpRequest(element, mappings);
tasks[i] = Task.Factory.StartNew<IResponse>(() =>
{
try
{
var result = makeExternalHttpRequest();
if (!token.IsCancellationRequested)
{
return result;
}
}catch(Exception exception)
{
}
return null;
}, token);
};
var timeout = ...some timeout value
Task.WaitAll(tasks,timeout, token);
tokenSource.Cancel();
for (int i = 0; i < tasks.Length; i++)
{
if (tasks[i].Result != null)
{
if (tasks[i].IsCompleted)
{
results.Add(tasks[i].Result);
}
}
}
過去 6 ~ 7 か月間、すべてが期待どおりに機能しているように見えましたが、昨日、サーバーがダウンし、システム管理者から次のようなメッセージが送信されました。
強調表示された領域に気付くと、経過時間に対してかなり大きいです。
これが原因でサーバーがダウンしたのではないかと推測していますが、まだ原因を調査中です。
何が起こっているのか、次のステップはどうあるべきかについて何か考えはありますか?