So I operate FreeBSD server that is connected to a 300 Mbps symmetrical fiber line. It often has to serve users on a different continent so the tested ping is anywhere from 100 to 300 ms, and in extreme cases 625 ms.
With worst case latency (625ms) I calculated that my Window size should be 18.75 MB. So I set my
kern.ipc.maxsockbuf to 39321600 and both my
net.inet.tcp.recvbuf_max and my
net.inet.tcp.sendbuf_max to 19660800. But it didn't help much it's still very slow on arrival. I also tried enabling
net.inet.tcp.path_mtu_discovery and it seemed to help a little, but with the server pushing into a 300 Mbps uplink, I'm only receiving about 12 Mbps when the download speeds are closer to 50 Mbps.
Am I missing anything, and what else can I do to optimize the server for the large pipe it's handling? Moving the server is not an option.