Observing TCP Pacing and Socket Buffers on Low-Memory VMs
Copy-pasting oversized net.ipv4.tcp_rmem values onto a 512 MB virtual machine often backfires: a handful of slow mobile clients holding large send windows can pressure memory long before CPU saturates.
Check Baseline qdisc and Congestion State
Before changing any sysctl knob, look at active socket metrics using ss:
sysctl net.ipv4.tcp_congestion_control net.core.default_qdisc
ss -tin sport = :443 | head -n 20
When fq + bbr is enabled, pacing keeps bursty HTTPS asset transfers smooth across high-BDP transpacific links without requiring aggressive buffer pre-allocation.
Keep Memory Caps Reasonable
On sub-1 GB hosts, leaving the upper bounds conservative (such as 4–8 MB max socket window instead of 32–64 MB) protects against OOM pressure while still saturating typical single-flow 100–300 Mbps connections across ~140 ms RTT paths.