Code-Sharp / WampSharp

A C# implementation of WAMP (The Web Application Messaging Protocol)
http://wampsharp.net
Other
385 stars 83 forks source link

High amount of memory usage from ImmutableList<Int64> #358

Open novak-dev opened 1 year ago

novak-dev commented 1 year ago

immutablelist-leak Describe the bug After running load tests, I have observed a potential memory leak when running the meta-api descriptor service.

To Reproduce

  1. Run Wamp server realm and run realm.HostMetaApiService()
  2. Create a topic for reflection based publisher/subscriber
  3. Create a large number of clients (1000+) and subscribe to the topic
  4. Disconnect these clients
  5. Repeat the previous two steps a few times, make sure to use new session id for the clients

Expected behavior When clients disconnect the memory used by the ImmutableList mSubscribers should drop

.NET platform variant

Additional context See the attached file for info. The count only goes up in ImmutableList> and that memory never gets released, even when I force GC multiple times. Issue goes away when I disable meta api service or I do not perform any subscriptions.

novak-dev commented 1 year ago

Hi just a quick update - I don't believe it is actually a leak anymore since I logged the number of subscribes in the list and it was not going up.

It must be some kind of quirk with the GC since immutable list is used and its constantly copying the entire list every time a new entry is added. This is probably creating a lot of garbage. So I would suggest to use a regular list instead to avoid it.