Only very late did it occur to someone that we basically had an unnecessary call in there due to a function call that returned a list that was then evaluated by a LINQ query. By converting to a list, the whole queue object was deserialized into an object, then immediately serialized into a queryable object again. This process relies on loading the whole object into the system RAM each and every time — potentially hundreds of times per minute. That doesn’t matter as long as you have a small queue to load into RAM, but then it quickly has to rely on out-of-memory storage on the HDD.
Which is why instead of using a debugger it pays off to use a profiler when looking at performance issues.