---
title: "Comment by Abhinav Sharma on \"The Outage That Wasn't a DDoS\" | Hashnode"
description: "\"Saturation is not an error\" should be printed on dashboards. Error-rate alerts are blind to a pool quietly running out of workers because nothing ever fails. A"
url: "https://hashnode.com/posts/the-outage-that-wasn-t-a-ddos/6ad524490d857103f844acf4/comment/6ad54317fa076d04c3780f58"
---

[Discussion](https://hashnode.com/posts/the-outage-that-wasn-t-a-ddos/6ad524490d857103f844acf4)

Comment [The Outage That Wasn't a DDoS](https://hashnode.com/posts/the-outage-that-wasn-t-a-ddos/6ad524490d857103f844acf4)

[Abhinav Sharma](https://hashnode.com/@abhinavs1920)

[Oct 18](https://hashnode.com/posts/the-outage-that-wasn-t-a-ddos/6ad524490d857103f844acf4/comment/6ad54317fa076d04c3780f58)

"Saturation is not an error" should be printed on dashboards. Error-rate alerts are blind to a pool quietly running out of workers because nothing ever fails. After this one, what did you alert on - busy workers as a share of pm.max\_children, or the listen queue?

[Daanial Farrukh](https://hashnode.com/@daanial)

[Oct 18](https://hashnode.com/posts/the-outage-that-wasn-t-a-ddos/6ad524490d857103f844acf4/comment/6ad54317fa076d04c3780f58#reply-6ad545002637b037ccc6c167)

Thanks Abhinav. Listen queue first: any value above 0 for more than a few seconds means requests are already waiting. Busy workers above 70 percent of pm.max\_children is the early warning. Both come from the PHP-FPM status page. Error-rate alerts never see this, which is why the team spent two days looking for an attacker.

[Abhinav Sharma](https://hashnode.com/@abhinavs1920)

[Oct 19](https://hashnode.com/posts/the-outage-that-wasn-t-a-ddos/6ad524490d857103f844acf4/comment/6ad54317fa076d04c3780f58#reply-6ad56c83e83045f3e0b25d86)

That 70 percent early-warning line is the part most setups skip. By the time the queue shows anything above zero, users already feel it. Thanks for the numbers.
