私は仕事をするWindowsサービスを持っています。私は、パフォーマンスの問題を発見し、このような絵を持っているドットトレースでそれをプロファイル: GC Wait 88%Json.NETとGСでC#サービスのパフォーマンスの問題が発生しました。
GCは88%の時間がかかる待っていることを奇妙に思えるので、私はいくつかの小さな間隔で、閉じた外観を取得し、取得: Thread stats
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;
}
}
}
誰でも同様の問題がありました:
私は期間をblokingない時に、スレッドがJSON.Netのdeserilizationを通じてオブジェクト を割り当てても、GCによってブロックされ、このコードことがわかりましたか?または私は何かを逃していますか?
ワークステーションGCのですか? – Evk
はい、私はこのケースではパフォーマンスが低いです。 – Mikel
".NET Memory Allocations"を選択し、 "Call Stack"パネルの内容を表示できますか?トレースファイルをどこかでアップロードすることができればさらに良いです。 –