dumpheap -stat zeigt Folgendes:
7f6f4964f8f0 18,152 1,466,966,959 System.Byte[]
7f6f48fad2e0 51,915 1,981,308,612 System.String
gcroot mit der Adresse einer der Zeichenfolgen habe ich Folgendes gefunden:
- 86 eindeutige Wurzeln
Sie sind ähnlich, aber nicht genau diese sind einige Beispiele
r15:
-> 7f6547f46900 System.Threading.Thread+StartHelper
-> 7f66486d8ab8 System.Threading.ExecutionContext
-> 7f664863e128 System.Threading.AsyncLocalValueMap+MultiElementAsyncLocalValueMap
-> 7f664863e140 System.Collections.Generic.KeyValuePair[]
-> 7f66484d1b68 System.Collections.Generic.KeyValuePair[]
-> 7f66484cfe18 Sentry.Scope
-> 7f6647cdb6c0 Sentry.AspNetCore.SentryAspNetCoreOptions
-> 7f6647f9ae08 Sentry.Internal.Http.HttpTransport
-> 7f6647f92a50 System.Net.Http.HttpClient
-> 7f6647f92a20 Sentry.Internal.Http.RetryAfterHandler
-> 7f6647f929d0 Sentry.Internal.Http.GzipBufferedRequestBodyHandler
-> 7f6647f91da8 System.Net.Http.HttpClientHandler
-> 7f6647f92188 System.Net.Http.SocketsHttpHandler
-> 7f66483de670 System.Net.Http.DecompressionHandler
-> 7f66483de648 System.Net.Http.RedirectHandler
-> 7f66483de5b8 System.Net.Http.DiagnosticsHandler
-> 7f66483de4c0 System.Net.Http.HttpConnectionHandler
-> 7f66483ddeb0 System.Net.Http.HttpConnectionPoolManager
-> 7f66483de1d8 System.Threading.Timer
-> 7f66483de250 System.Threading.TimerHolder
-> 7f66483de1f0 System.Threading.TimerQueueTimer
-> 7f6647c8d908 System.Threading.TimerQueue
-> 7f65480e5990 System.Threading.TimerQueueTimer
-> 7f654811fb40 System.Threading.ExecutionContext
-> 7f654811fac0 System.Threading.AsyncLocalValueMap+MultiElementAsyncLocalValueMap
-> 7f654811fad8 System.Collections.Generic.KeyValuePair[]
-> 7f654811f9c8 System.Diagnostics.Activity
-> 7f654811de30 System.Diagnostics.Activity
-> 7f66487bb6d0 System.Diagnostics.Activity
-> 7f66487bb870 System.Diagnostics.Activity+TagsLinkedList
-> 7f66487bb898 System.Diagnostics.DiagNode
-> 7f66487bb920 System.Diagnostics.DiagNode
-> 7f65480e3ad0 System.Diagnostics.DiagNode
-> 7f695b756528 System.String
rbp-20: 00007f65298bf550
-> 7f6547f468b8 System.Threading.Thread
-> 7f66486d8ab8 System.Threading.ExecutionContext
-> 7f664863e128 System.Threading.AsyncLocalValueMap+MultiElementAsyncLocalValueMap
-> 7f664863e140 System.Collections.Generic.KeyValuePair[]
-> 7f66484d1b68 System.Collections.Generic.KeyValuePair[]
-> 7f66484cfe18 Sentry.Scope
-> 7f6647cdb6c0 Sentry.AspNetCore.SentryAspNetCoreOptions
-> 7f6647f9ae08 Sentry.Internal.Http.HttpTransport
-> 7f6647f92a50 System.Net.Http.HttpClient
-> 7f6647f92a20 Sentry.Internal.Http.RetryAfterHandler
-> 7f6647f929d0 Sentry.Internal.Http.GzipBufferedRequestBodyHandler
-> 7f6647f91da8 System.Net.Http.HttpClientHandler
-> 7f6647f92188 System.Net.Http.SocketsHttpHandler
-> 7f66483de670 System.Net.Http.DecompressionHandler
-> 7f66483de648 System.Net.Http.RedirectHandler
-> 7f66483de5b8 System.Net.Http.DiagnosticsHandler
-> 7f66483de4c0 System.Net.Http.HttpConnectionHandler
-> 7f66483ddeb0 System.Net.Http.HttpConnectionPoolManager
-> 7f66483de1d8 System.Threading.Timer
-> 7f66483de250 System.Threading.TimerHolder
-> 7f66483de1f0 System.Threading.TimerQueueTimer
-> 7f6647c8d908 System.Threading.TimerQueue
-> 7f65480e5990 System.Threading.TimerQueueTimer
-> 7f654811fb40 System.Threading.ExecutionContext
-> 7f654811fac0 System.Threading.AsyncLocalValueMap+MultiElementAsyncLocalValueMap
-> 7f654811fad8 System.Collections.Generic.KeyValuePair[]
-> 7f654811f9c8 System.Diagnostics.Activity
-> 7f654811de30 System.Diagnostics.Activity
-> 7f66487bb6d0 System.Diagnostics.Activity
-> 7f66487bb870 System.Diagnostics.Activity+TagsLinkedList
-> 7f66487bb898 System.Diagnostics.DiagNode
-> 7f66487bb920 System.Diagnostics.DiagNode
-> 7f65480e3ad0 System.Diagnostics.DiagNode
-> 7f695b756528 System.String
Durch die Verwendung von dc in dotnet-dumpanalysieren konnte die riesige String-Instanz gelesen werden. Es war überraschend, dass der Inhalt mit Metadaten über die Klasse, den Methodenaufruf und jedes noch so kleine Detail gefüllt war Prozesse hier sind einige Beispiele:
{"Target":{"handler":{"Target":{"4__this":{},"act":{"Transfer":null,"TraceId":">>>>>aaa-432-
","TransferId":"15","SeqNum":"08","TriggeredBy":2,"TriggeredAt":"2024-12-․19T12:30:08.9597687Z"},"transfer":null,"blacklisted":[56]},"Method":{"Name":"g__Handler|0","DeclaringType":"ServiceName.Infrastructure.modules.ServiceOutgoing.Actions.ServiceActionAction+
c__DisplayClass10_0, ServiceName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ReflectedType":"ServiceName.Infrastructure.modul
es.ServiceOutgoing.Actions.ServiceActionAction+c__DisplayClass10_0, ServiceName, Version=1.0.0.0, Culture=neutral,Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+
c__DisplayClass102_0, ServiceName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+c__DisplayClass74_0, ServiceName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+c__DisplayClass78_0, ServiceName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+
c__DisplayClass81_0, ServiceName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+c__DisplayClass87_0, ServiceName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+c__DisplayClass93_0, ServiceName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+o__107, ServiceName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+o__72, ServiceName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+o__74, ServiceName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+o__78, ServiceName, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+o__81, ServiceName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","ServiceName.Infrastructure.Services.ServiceName+
o__94, ServiceName, Version=1.0.0.0, Culture=neutral,
Die Zeichenfolge ist mit Müll wie diesem gefüllt.
Ich habe zuvor Sentry zur Fehlerüberwachung verwendet, aber nachdem ich es entfernt habe, besteht das Problem weiterhin.
Dann habe ich jegliche Protokollierung aus dem Dienst entfernt, aber das Problem besteht weiterhin.
Die Konfiguration ist größtenteils für alle Mikrodienste gleich
Ich habe die gesamte Registrierung der Dienste noch einmal überprüft, bis nein verfügbar.
Was könnte dazu führen, dass so große Zeichenfolgen im Speicher verbleiben?