@Gargron are you getting tons of requests at once?
From what I see your server doesn't have any limits on concurrent http handlers and you load load a lot of data, instantiate the decoder and so on. All that before you even get to the processing part.
I recommend you use a semaphore at the beginning of your handler or a http framework that can limit concurrent connections.
Let's say the pool can process 5 req/s but you get 15 http reqs/s. Then your memory fills up.