Node is fast — until something blocks the event loop.
Node handles thousands of simultaneous connections on a single thread by never waiting. That model is genuinely fast — and genuinely fragile. The moment one piece of synchronous, CPU-heavy code holds that thread — a large computation, a synchronous file read, a heavy parse — every other request is frozen until it finishes. A Node app that is quick in testing and stutters under real load is almost always blocking the event loop somewhere, and the team usually does not know where. Keeping the loop unblocked is not an optimisation; it is the core discipline of writing Node well.