[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Scaling Syncrepl
In my environment I have a need to synchronize from a single master to 125 globally distributed read-only consumers.
I've attempted this in two ways and run into problems in either direction.
First, I attempted a multi-tier replication strategy where the master would sync to a regional consumer which would in-turn act as a producer for around 20 slaves each. It seems that a server should be able to act as both a producer and a consumer, but in my experience with 2.4.25 this will cause a repeatable segfault within a days time. (test_filter() is passed a NULL filter in syncrepl.c) I think this would probably be the best solution if I could resolve the segfault issue.
The other option I've tried is pointing all 125 slaves at a single master. This works if I bring the slaves up gradually, but if they all attempt to connect at once (like after a master restart) the initial sync process seems to monopolize a thread per replica which causes any other searches to fail for a period of greater than 30 seconds. Bumping the threads up to over 125 seems to solve the issue on a test machine but I'm hesitant to do this on the production master which is used heavily for a variety of other purposes.
Can anyone offer advice on how I could go about resolving these issues or other methods for successfully replicating to this many slaves?
Thanks,
Duncan.