I decided to post this in case it would help anyone who is also struggling out there using Syncthing with Windows machines.
TLDR - You may need to manually increase the UDP maximum READ/WRITE buffers for Windows because quic-go (used in Syncthing) might not automatically increase it. There’s a post on GitHub about increasing this for linux, but not for windows. You can find information about increasing the buffer for Windows here.
In my case, I have about 30 machines that must be Windows due to software limitations. Syncthing is keeping about 50GB of data synced between them from 1 folder, which works great 90% of the time. The other 10% is when an update occurs. Updates take all of the machines 2-3 days to recover with very small transfers occurring all the time.
After researching for a bit, I looked into the QUIC library that Syncthing was using, quic-go. In this library, there is a post about UDP buffers and how they impact the protocol.
Unfortunately, they didn’t mention how to fix this in Windows, but I eventually found 1 post and 1 document that specified that you can do it by adding two DWORD registry keys to HKLM:\SYSTEM\CurrentControlSet\Services\AFD\Parameters:
DefaultSendWindow - 0x17D7840
DefaultReceiveWindow - 0x17D7840
0x17D7840 = 25000000B = 25MB
Once I added the registry keys and restarted Syncthing…the significance was massive! A node was syncing 50GB of data in less than 10 minutes when previously it would take several hours to sync 5GB! Considering how my Syncthing “service” is set up, quic-go probably doesn’t have enough permissions to modify the buffer, so it is forced to work with the defaults, which is 8192…i.e. 8.1KB.
Hopefully, this helps someone, it helped me!
Note: Unfortunately, I had to delete some of my links because new users are limited to 2, but I kept the most important ones.