私はいくつかのビジネス作業を行う Windows サービスを持っています。パフォーマンスの問題を見つけるために dotTrace でプロファイリングし、次のような図を作成しました: GC 待機 88%
GC 待機に 88% の時間がかかるのは奇妙に思えるので、いくつかの小さな間隔を閉じて、以下を取得します。
非ブロック期間中、スレッドは JSON.Net デシリアライゼーションを通じてオブジェクトを割り当て、GC によってブロックされたこのコードも発見しました。
using (var response = await _httpClient.SendAsync(request, combinedTokenSource.Token))
{
response.EnsureSuccessStatusCode();
if (response.Content == null)
throw new InvalidOperationException("No HTTP response received.");
using (var responseStream = await response.Content.ReadAsStreamAsync())
{
using (var textReader = new JsonTextReader(new StreamReader(responseStream)))
{
var results = new JsonSerializer().Deserialize<ElasticResponse>(textReader);
return results;
}
}
}
誰かが同様の問題を抱えていましたか?または、何か不足していますか?