Problem manifests when systemUsage memory limit is triggered and the pending message cursor for non persistent messages is flushing its in memory cache to temp store, this is taking a long time and in the mean time, other cursors that need to flush to disk are blocking on the temp store, and other sends to that destination are blocked.
In this scenario, the broker will come back to life once the flush completes.
The problem is that the all cursors will see the same limit at the same time and try and flush.
The usage of the temp store index by the PList needs the be improved, it is not optimal at the moment as it uses too much space in the index. It uses a page per entry and reading from it, once the page cache is exhausted, is too slow.