I’m investigating Couchbase Server’s strategy about resource sharing/segregation between buckets. My goal is to set up a cluster serving different apps (each app has its own bucket) and have a kind of “minimum guaranteed performance” for each app, i.e. if one app is saturating its own memory/cpu/storage limits other apps can still access their data with a reasonable performance.
While RAM quota in implicit in bucket’s definition, it’s not evident to me if I can limit other resources usage to limit performance interferences between buckets. I’ve some ideas/questions to work on:
- Bucket data is hosted in a directory named with buckets name under the node’s data directory, we could assign a quota to that dir or mount a dedicated disk to bucket’s data path, to avoid a “disk full” locking all buckets.
- We can set disk i/o priority to make an app more “performing” than others
- Can rack / zone awarness be used to “segregate” vBuckets on certain servers and would this ensure that the bucket uses resource only from that servers?
- Can containerization help in this direction?
Any help appreciated.