Optimizing 3-Way Sync with Asynchronous Connections Mystery

Let’s say I have three computers running syncthing to sync a large folder of files. Server1 is the read-only master and Server2 and Server3 are read-write clone copies. Servers 2 and 3 are also linked to each other, so we have a three-way setup. Let’s also say that all three have standard asynchronous internet connections with a much faster download speed vs. their upload speed. Now, if you add a new file to the folder, its starts copying it to both clones simultaneously using half of the upload bandwidth to each one. So far, this is perfect and works great - it takes two times the time/size to upload the file to both clones. Now let’s say I add a lot of new files to the master and I have setup Server2 to pull the “Smallest First” and Server3 to pull the “Largest First”. This basically makes the clones receive the new files in opposite by size order. This works fine. But, I would expect that after Server1 gets a few of the smaller files, and after Server2 receives a few of the larger files, that they would then start to send the files that they already have to each other so that the total time/upload to fully sync would be lessened. However, this does not happen, and a full copy is sent from the master to the clones taking two times the time/size of the new files. Is there any way to setup syncthing so that it would work this way?

It should work the way you describe out of the box, so I’m not sure why it doesn’t. This is the reason for the default “random” order.

I think it’s because of the order. It will only start doing that once once they are both half way through as by definition they are downloading files that each other are not interested in in the short term.

1 Like

thx for your reply i will experiment with both of the clones on “random” order

1 Like

Ok, I tried it with Random order - and it works as expected, taking the full time to sync down to nearly half. But, I would expect it work the same with the settings I described, one on smallest and one on largest. Love this program!

I’ve explained why it will not work the way you expect.

1 Like