Question
A Java/Tomcat monolith starts returning 503s and 'connection refused' at the load balancer at 12:30. Tomcat's busy-thread count is pinned at the maxThreads of 200 and the accept queue is full. A thread dump shows ~190 threads in `WAITING` state, all blocked at the same point: they're inside the request-handling thread pool, having submitted a sub-task to the *same* thread pool and calling `Future.get()` waiting for it to complete. CPU is near idle. A deploy at 12:15 'parallelized the report-generation step using the shared executor.' Triage and explain the failure precisely.
Stop the bleeding first (mitigate), then form hypotheses from real signals. Separate root cause from symptom, communicate status as you go, and close with what prevents a repeat.