Work out tcp backlog sizing instantly with clear inputs, formula shown and shareable results.
The accept queue holds established connections waiting for the application to call accept, and its depth follows Little's law: connection rate times accept latency. Bursts multiply that, and when the queue overflows the kernel silently drops SYNs so clients see a timeout rather than a refusal. Both the listen() argument and net.core.somaxconn must be raised, since the effective backlog is the smaller of the two.
Backlog sizing
steady depth = connection rate x accept latency; burst depth = steady x burst factor; recommended = burst depth x 1.5, floor 128
Because an overflowing accept queue drops the SYN silently by default. The client retries per its SYN backoff, which looks like a slow network rather than a full server.
The minimum of the application's listen backlog and net.core.somaxconn. Raising only one has no effect.