What to watch
The gateway counts open connections, not requests. 30 new a second, each held for 40 seconds, is 1200 sockets against a ceiling of 1600. Double the load and it starts refusing connections outright. Drag the message rate up and watch the push servers. One message becomes one delivery per pod, and each pod can only do about 130 a second. Past that, members stop seeing messages while the senders see no errors at all. That silence is what makes fan-out hard. Messages are split across six channel shards. Give the message store a hot key and one busy channel takes far more than its share, so that shard melts while the average still looks healthy. Voice runs on its own servers and never touches the text path, so chat can be on fire while calls stay up.What it is made of
Under load
Measured by running this design through the simulator at multiples of its own offered rate of 250 requests a second. Twenty seconds of simulated time, one fixed seed, so the same numbers come out every time.This design holds 625 requests a second with 0% errors. At 750 it is losing 16% of them.
Open this example
Load Discord: real-time chat from the Examples menu and drag the traffic slider yourself.