Brian Julin wrote:
After collecting some more debug logs, I noticed that this problem was happening too often on requests numbered around 260 to be a coincidence. It turns out this happens after a thread is marked for recycling due to having handled over 128 requests.
Well, set "max_requests_per_server = 0". There's really no reason to clean up old threads.
Below is a debug log with some extra radlogs thrown in by hand. The "Reaping" lines happen in the loop that tests whether threads have handled so many connections that they should be retired. Is it normal for a thread to grab and handle requests after it has been marked for recycling?
No. See src/main/threads.c. The thread loops around while self.status != cancelled That's a poorly tested edge condition. The honest recommendation is just to set "max_requests_per_server = 0". My suggestion is also to remove that configuration entirely in 3.0. Alan DeKok.