What’s the maximum number of push replications (assuming no pull replication at all) each instance of sync gateway can handle concurrently (or on per second basis), without getting significant error rate or slow down? And same question for pull replication only? And what if half push & half pull? if the answer depends on the size of memory or size of JSON being pushed/pulled or anything else, what does the calculation look like? A detailed answer would be highly appreciated!
Test it with your current setup: https://github.com/brianfrankcooper/YCSB
Disclaimer: I’m a user of CB, not a CB developer
Thanks benjamin_glatzeder. This helps but not quite what I am looking for. Testing might not tell me what the bottlenecks are in different scenarios and therefore doesn’t tell me how should I optimize the setup. I am really looking for some theoretical guidance on this so that I can avoid spending lots of time on trial and error and speculate an answer. Thanks.
Thanks. That’s for Couchbase Server, not the SyncGateway, right? I did find this somewhat helpful:
It drops a some hints, but doesn’t address my questions thoroughly:
1.It says “A quad-core/4GB RAM backed Sync Gateway can support up to 5k users” , presumably this is just an rough guesstimation as it probably depends on the size of JSON and pattern of push/pull replication.
- It says “Because Go uses asynchronous I/O, it’s capable of listening on large numbers of sockets provided that you make sure the OS is tuned accordingly and you’ve got enough network interfaces to provide a sufficiently large namespace of TCP port numbers per node.” This seems to suggest network interfaces/namespace of TCP port numbers per node could be the bottleneck on high load. Then given a limit on this, say 10K, and given the JSON size and pattern of replication, how to calculate the RAM and number of cores for CPU needed?
I’m unable to answer. Let’s see if someone more knowledgeable can help out