{"id":1632,"date":"2014-12-16T19:33:30","date_gmt":"2014-12-16T19:33:30","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1632"},"modified":"2025-06-13T23:50:12","modified_gmt":"2025-06-14T06:50:12","slug":"how-many-nodes-part-4-monitoring-sizing","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/","title":{"rendered":"How Many Nodes? Part 4: Monitoring for Sizing"},"content":{"rendered":"<p dir=\"ltr\">Welcome back everyone, this will be the last post in this series around sizing. \u00a0In the previous posts I provided an <a style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\" href=\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-1-introduction-sizing-couchbase-server-20-cluster\/\"><u>overview of the considerations when sizing a Couchbase Server cluster,<\/u><\/a> a <a style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\" href=\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-2-sizing-couchbase-server-20-cluster\/\"><u>deeper look at how various features\/versions affect this sizing<\/u><\/a> and provided some <a style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\" href=\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-3-hardware-considerations\/\"><u>specific hardware considerations and recommendations<\/u><\/a>.<\/p>\n<p dir=\"ltr\">In this last post, I will be discussing the various metrics that should be used to understand the sizing needs of a running Couchbase Server cluster. \u00a0I\u2019ll also attempt to provide guidance around thresholds and alerts where appropriate. \u00a0Grab a coffee, this is gonna be a long one&#8230;<\/p>\n<p dir=\"ltr\">After you\u2019ve used the first three posts to understand what your initial sizing should be and have moved into production, it\u2019s very important to continue monitoring your cluster and making any sizing changes related to that monitoring. \u00a0One of the widely accepted benefits of Couchbase Server is the ability to upgrade and expand without any disruption to your application and this is used heavily across our entire customer base.<\/p>\n<p dir=\"ltr\">As a quick recap, the 5 main factors that we used for sizing in the first place are the same 5 that we will be monitoring:<\/p>\n<ul>\n<li dir=\"ltr\">RAM<\/li>\n<li dir=\"ltr\">Disk (IO and space)<\/li>\n<li dir=\"ltr\">CPU<\/li>\n<li dir=\"ltr\">Network<\/li>\n<li dir=\"ltr\">Data Distribution<\/li>\n<\/ul>\n<p dir=\"ltr\">Many metrics will come directly from within Couchbase itself and are related only to our software. \u00a0However, it is also important to have extensive monitoring of the system from a perspective outside of Couchbase (for the first 4). \u00a0Also keep in mind that while many metrics get aggregated across the whole cluster (per bucket) and that is usually the easiest way for a human to consume them, everything is happening on a per-node\/per-bucket basis and so it is important to monitor at the granularity of a single node. \u00a0Tying these all together into a centralized monitoring system would be the best approach.<\/p>\n<p dir=\"ltr\"><strong>Tracking and Thresholds<\/strong><\/p>\n<p dir=\"ltr\">Every application is going to be a little bit different and so the values and behaviors of these statistics will vary. \u00a0It\u2019s up to the administrator to understand which ones are important for their application, and at what levels they should be concerned about.<\/p>\n<p dir=\"ltr\">You should also be expecting that each node has basically the same values (+\/-) across all these metrics and possibly create some alert if any one node diverges by too much.<\/p>\n<p dir=\"ltr\">While a hard threshold for most of these is certainly valuable, in many cases it makes more sense to track these metrics over time so that you can be prepared with sizing changes before reaching any critical point. \u00a0This also allows you to gather accurate baselines for what you should be expecting.<\/p>\n<p dir=\"ltr\">For each statistic below I\u2019ve tried to give a sense of what levels and\/or thresholds would be appropriate for different classes of application. \u00a0Please don\u2019t hesitate to leverage the hundreds of man years of experience built up within Couchbase, Inc. to answer any questions specific to your application.<\/p>\n<p dir=\"ltr\"><strong>Reacting to Changes<\/strong><\/p>\n<p dir=\"ltr\">You\u2019ll see below that I don\u2019t give a specific \u201cdo this\u201d action item for each area. \u00a0I take the approach that it\u2019s more important to understand what each value means and then use the combination of everything to decide whether a change is necessary. \u00a0If any of the below values are not within acceptable bounds for your application, it is important to go back through the sizing calculations and adjust accordingly. \u00a0In almost all situations where more resources are needed, the answer will be to add one or more nodes.<\/p>\n<p dir=\"ltr\"><strong>Summary<\/strong><\/p>\n<p dir=\"ltr\">First, let\u2019s take a look at the \u201cSummary\u201d section of Couchbase\u2019s monitoring graphs:<img decoding=\"async\" style=\"border-style: none;height: 411px;width: 624px\" src=\"https:\/\/lh5.googleusercontent.com\/eYeezjFmeaYICnU5Qtsvt6O8KEf02pUopySyjwtBejomBt8Ea0VODTxFhgGJlGB_e1DX_3NTGMe6i2mJHD47hXWtD4oCZci2eEGJlTjHvrGzXiveL0HNaxnlchDg_Q\" \/><\/p>\n<p dir=\"ltr\">This set of statistics should be your first point of reference for monitoring Couchbase in general, as well as for sizing. \u00a0It is designed to give you a high level view across many areas and we will be using many of these metrics later on in the discussion. \u00a0You\u2019ll see that I bring in some statistics that are not covered directly here but this is a great place to start, if you are looking for a starting point to <a href=\"https:\/\/docs.couchbase.com\/couchbase-manual-2.5\/cb-rest-api\/#getting-bucket-statistics\"><u>import metrics into your own systems<\/u><\/a>.<\/p>\n<p dir=\"ltr\">You\u2019ll see a proportional relationship between the importance of each sizing factor and the number of metrics that we have to monitor it.<\/p>\n<p dir=\"ltr\"><strong>RAM<\/strong><\/p>\n<p dir=\"ltr\">As you\u2019ve no doubt recognized at this point, RAM is usually one of the most important factors related to sizing for Couchbase and is also the one that can change most dramatically based upon workload, dataset size or other factors.<\/p>\n<p dir=\"ltr\">There are a few different ways of looking at the memory usage within Couchbase and many are interrelated:<\/p>\n<ul>\n<li><span style=\"background-color: transparent\">\u201c<\/span><em>items<\/em><span style=\"background-color: transparent\">\u201d is the number of active documents in a particular bucket (excludes replicas). \u00a0It is an indirect indication of how much memory is being used, and is also one of the primary values we use for our sizing calculations. \u00a0It\u2019s not always the most useful to monitor on an ongoing basis though.<\/span><\/li>\n<li><span style=\"background-color: transparent\">\u201c<\/span><em>memory used<\/em><span style=\"background-color: transparent\">\u201d: This is <\/span><strong>the<\/strong><span style=\"background-color: transparent\"> memory usage metric for Couchbase and describes how much memory the software thinks it is using. \u00a0This is the value that will be used to control ejections and OOM messages. \u00a0(you\u2019ll sometimes hear our engineers refer to this as \u201c<\/span><em>mem_used<\/em><span style=\"background-color: transparent\">\u201d&#8230;it\u2019s the same)<\/span>\n<ul>\n<li><span style=\"background-color: transparent\">\u201c<\/span><em>high water mark<\/em><span style=\"background-color: transparent\">\u201d is very closely related to \u201c<\/span><em>memory used<\/em><span style=\"background-color: transparent\">\u201d and you may wish to track them together on a graph. \u00a0This value tells you at what point the node will begin ejecting data.<\/span><\/li>\n<li><span style=\"background-color: transparent\">You always want \u201c<\/span><em>memory used<\/em><span style=\"background-color: transparent\">\u201d to be below the \u201c<\/span><em>high water mark<\/em><span style=\"background-color: transparent\">\u201d. \u00a0Some applications may expect it to go slightly over but then come back down again as data is ejected, while others may expect it never to reach the \u201c<\/span><em>high water mark<\/em><span style=\"background-color: transparent\">\u201d. \u00a0<\/span><\/li>\n<li><span style=\"background-color: transparent\">It may also be important to monitor this value against the actual amount of RAM being used by the \u201cmemcached\u201d process within the operating system. \u00a0There are a few cases where these two diverge and keeping an eye on them is important. \u00a0Anything over 10% divergence would warrant some investigation, though some systems may want to allow higher percentages before taking any action.<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"background-color: transparent\">Working set:<\/span>\n<ul>\n<li><span style=\"background-color: transparent\">\u201c<\/span><em>cache miss ratio<\/em><span style=\"background-color: transparent\">\u201d: This is a percentage of the number of reads being served from disk as opposed to from RAM. \u00a0A value of 0 means all reads are coming from RAM, while anything higher than that indicates some reads are coming from disk.<\/span>\n<ul>\n<li><span style=\"background-color: transparent\">For applications that expect everything to be served from RAM, this should always be 0.<\/span><\/li>\n<li><span style=\"background-color: transparent\">For applications that expect this to be non-0, it should ideally be as low as possible, most deployments are under 1% but some accept upwards of 10%. \u00a0SSD\u2019s versus spinning disks have a big effect on what is a reasonable value.<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"background-color: transparent\">\u201c<\/span><em>active docs resident %<\/em><span style=\"background-color: transparent\">\u201d: This is the percentage of items currently cached in RAM. \u00a0100% means all items are cached in RAM while anything less than that indicates some items have been ejected. \u00a0<\/span>\n<ul>\n<li><span style=\"background-color: transparent\">Some applications expect that this is always 100% and will alert if it goes below. \u00a0<\/span><\/li>\n<li><span style=\"background-color: transparent\">Other applications expect this to be something lower than 100%, but the actual value is up to you. \u00a0I would generally recommend not going below 30% unless your application is quite comfortable with it.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><span style=\"background-color: transparent\">Note that while \u201c<\/span><em>active docs resident %<\/em><span style=\"background-color: transparent\">\u201d may be significantly less than 100%, the \u201c<\/span><em>cache miss ratio<\/em><span style=\"background-color: transparent\">\u201d may still be within acceptable range depending on the working set of your application.<\/span><\/li>\n<li><span style=\"background-color: transparent\">\u201c<\/span><em>temp OOM per sec.<\/em><span style=\"background-color: transparent\">\u201d is a measure of how many write operations are failing due to an \u201cout of memory\u201d situation within the node\/bucket. \u00a0It will only occur if \u201cmemory used\u201d reaches 90% of the total bucket quota. \u00a0<\/span>\n<ul>\n<li><span style=\"background-color: transparent\">Unless explicitly expected, anything non-0 here should be considered very bad. \u00a0However, this situation can be avoided by appropriately monitoring \u201c<\/span><em>memory used<\/em><span style=\"background-color: transparent\">\u201d as stated above.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p dir=\"ltr\">Outside of the Couchbase specific metrics, you\u2019ll also want to be monitoring:<\/p>\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">The overall free RAM available on the node. \u00a0Keep in mind that Linux has some funky ways of expressing what \u201cfree\u201d actually is.<\/span>\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">Alert if it goes below 1-2GB.<\/span><\/li>\n<\/ul>\n<\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">Swap usage. \u00a0While Linux is expected to use a little bit of swap under normal conditions, any excessive amount of swap usage or excessive swapping (look at the output of \u2018vmstat\u2019) would be considered cause for concern<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">The memory usage of the beam.smp process (erl.exe on Windows). \u00a0Previous versions had some potentially excessive growth possible in this process. \u00a0Those issues have been fixed as of 2.5 but it\u2019s still a good idea to keep an eye on.<\/span>\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">More than 4.5GB would be inappropriate here.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p dir=\"ltr\"><strong>Disk<\/strong><\/p>\n<p dir=\"ltr\">Split into IO versus space, overall disk resource sizing is also critically important. \u00a0Depending on the nature of the workload, it can sometimes be more important than RAM.<\/p>\n<p dir=\"ltr\">Taking IO first, we have a few metrics worthy of tracking:<\/p>\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">\u201c<\/span><em>disk write queue<\/em><span style=\"background-color: transparent\">\u201d: This is <\/span><strong>the<\/strong><span style=\"background-color: transparent\"> metric for understanding whether there is sufficient disk IO on a node. \u00a0While there are many processes that contend for disk IO (data writing, compaction, views, XDCR, local backups, etc), we use the \u201c<\/span><em>disk write queue<\/em><span style=\"background-color: transparent\">\u201d as a general meter as insufficient IO will cause items to be written to disk slower (regardless of cause) and should be resolved.<\/span>\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">Anything approaching 1M items per-bucket per-node should be cause for concern, though many applications expect it to be much lower for their workload. \u00a0This should be expected to be higher during a rebalance.<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">This metric is also important from a trending perspective since it will be going up and down in most cases. \u00a0Many applications accept it spiking during their peak workload (still should be &lt;1M) but it\u2019s important that it goes down during periods of lower load. \u00a0A constantly rising queue over time indicates that there isn\u2019t enough disk IO overall.<\/span><\/li>\n<\/ul>\n<\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">\u201c<\/span><em>disk creates per sec<\/em><span style=\"background-color: transparent\">\u201d, \u201c<\/span><em>disk updates per sec<\/em><span style=\"background-color: transparent\">\u201d, \u201c<\/span><em>disk reads per sec<\/em><span style=\"background-color: transparent\">\u201d: These are all indications of the read\/write rate and can be used in future sizing calculations<\/span><\/li>\n<\/ul>\n<p dir=\"ltr\">For space:<\/p>\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">\u201c<\/span><em>docs total disk size<\/em><span style=\"background-color: transparent\">\u201d and \u201c<\/span><em>views total disk size<\/em><span style=\"background-color: transparent\">\u201d: These measure the amount of disk space in use under the data directory and the views directory (by best practice, these should be on separate partitions). \u00a0This is different than \u201c<\/span><em>disk data size<\/em><span style=\"background-color: transparent\">\u201d or \u201c<\/span><em>views data size<\/em><span style=\"background-color: transparent\">\u201d, which measure the amount of active Couchbase data within those files. \u00a0The difference between these two cause \u201c<\/span><em>docs fragmentation %<\/em><span style=\"background-color: transparent\">\u201d and \u201c<\/span><em>views fragmentation %<\/em><span style=\"background-color: transparent\">\u201d which then potentially trigger compaction.<\/span>\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">It is very important to ensure enough available disk space not only for storing data, but also for the append-only nature of the file format, performing compaction, taking backups, etc. \u00a0An appropriate alerting level would be around 75% disk usage with a critical alert at 90%.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p dir=\"ltr\">Outside of Couchbase, the operating system will be monitoring not only disk space (think \u2018df\u2019) but also disk utilization (think \u2018iostat\u2019).<\/p>\n<p dir=\"ltr\"><strong>CPU<\/strong><\/p>\n<p dir=\"ltr\">As you\u2019ve seen in previous posts, CPU is very rarely an important area of sizing Couchbase. \u00a0With that said, it\u2019s still important to monitor the total CPU usage of a node and the CPU usage of the <em>memcached<\/em> and <em>beam.smp\/erl.exe<\/em> processes.<\/p>\n<p dir=\"ltr\">Another important aspect of CPU usage is the distribution across multiple cores. \u00a0While not related to sizing necessarily, an imbalance of CPU usage may require some investigation.<\/p>\n<p dir=\"ltr\"><strong>Network<\/strong><\/p>\n<p dir=\"ltr\">While network bandwidth and latency does have a big effect on the overall performance of the system, it\u2019s very rare for this to deviate from the expected levels and cause any issues.<\/p>\n<p dir=\"ltr\">The main value that we use within Couchbase to ensure a healthy network is related to the inter-node replication queue. \u00a0While not present in the above \u201cSummary\u201d, this is known casually as the \u201cTAP queue\u201d and is represented by \u201c<em>items<\/em>\u201d within the \u201cTAP QUEUES\u201d section of the UI:<img decoding=\"async\" style=\"border-style: none;height: 200px;width: 624px\" src=\"https:\/\/lh6.googleusercontent.com\/gfwlx5nTgy03jQa7LKmfitfYVJS5kGhJmJI0p4jNO9SwK_T19PUZLUTOLgliUP49X0f1aPJqE1oRFQdxbs3SiHKeCmJqh8AFl_LdCyUP-an8bbSVQMB7eu8yoL0gAA\" \/><\/p>\n<p dir=\"ltr\">This value will almost always be 0 and even a few above 0 is not cause for concern. \u00a0If this should rise to over 200 per-node, and especially if it continues rising, may indicate either a networking problem or something else within the cluster slowing down the replication.<\/p>\n<p dir=\"ltr\">Outside of Couchbase, you\u2019ll also want to keep a general eye on the network bandwidth usage between Couchbase nodes and between those nodes and your application servers. \u00a0Also potentially important is the number of TCP connections to the various <a href=\"https:\/\/docs.couchbase.com\/couchbase-manual-2.5\/cb-install\/#table-couchbase-network-ports\"><u>network ports,<\/u><\/a> mostly from the perspective of client-to-server communication.<\/p>\n<p dir=\"ltr\"><strong>Data Distribution<\/strong><\/p>\n<p dir=\"ltr\">At the bottom of the list for good reason, there\u2019s really not much to monitor here related to sizing. \u00a0It\u2019s also the only factor that really makes sense to look at across the whole cluster as opposed to individual nodes.<\/p>\n<p dir=\"ltr\">If we look at the \u201cvbucket resources\u201d section of the UI:<\/p>\n<p dir=\"ltr\"><img decoding=\"async\" style=\"border-style: none;height: 151px;width: 624px\" src=\"https:\/\/lh4.googleusercontent.com\/kpWLASXfAHzZinpr-cfMtVJh7GbOpecAP5AWWglE3hd09n0nVVwoLhBexNI1qVDDCXiYedAdu6v8ihHq8a8RXh4CYKrr5NjrrgLaYeGnk40RAjL3KIIk5bNTlebdEQ\" \/><\/p>\n<p dir=\"ltr\">We can see how many active and how many replica \u201cvBuckets\u201d are present for this bucket. \u00a0\u201c<em>Active<\/em> <em>vBuckets<\/em>\u201d should always be 1024 and \u201c<em>Replica vBuckets<\/em>\u201d should always be 1024*(number of replicas). \u00a0If they are not, that means there is some data either unavailable or unreplicated and immediate action is required. \u00a0This usually happens after a failure\/failover and will require a rebalance to return to normal.<\/p>\n<p dir=\"ltr\">The broad recommendation of always having at least 3 nodes in the cluster holds true as well.<\/p>\n<p dir=\"ltr\"><strong>XDCR<\/strong><\/p>\n<p dir=\"ltr\">If you\u2019re using XDCR with Couchbase, the most important metric to keep an eye on is the XDCR mutation queue &#8211; \u201c<em>outbound XDCR mutations<\/em>\u201d. \u00a0This is an indication of how many items are waiting to be replicated to buckets that are acting as destinations of this one. \u00a0Like the disk write queue, this is expected to grow and shrink under load but is important to ensure eventually gets near zero over time and does not continuously grow higher and higher.<\/p>\n<p dir=\"ltr\"><strong>Virtualization\/Cloud<\/strong><\/p>\n<p dir=\"ltr\">With no exceptions, the discussion above applies equally to all environments across physical hardware, virtual machines and cloud deployments. \u00a0The actual values may vary and certainly your thresholds and expected baselines will be different as well.<\/p>\n<p dir=\"ltr\">The main addition to this puzzle for virtualized and cloud environments is the impact of the underlying systems and hypervisors. \u00a0I\u2019ve provided some specific deployment guidelines in the previous post of this series so I won\u2019t recap here. \u00a0In terms of monitoring, all of the same \u201coutside of Couchbase\u201d apply to the underlying system.<\/p>\n<p dir=\"ltr\">One interesting intersection between the two deals with <a href=\"https:\/\/blog.sciencelogic.com\/netflix-steals-time-in-the-cloud-and-from-users\/03\/2011\"><u>\u201cstolen time\u201d<\/u><\/a>.<\/p>\n<p dir=\"ltr\"><strong>Conclusion<\/strong><\/p>\n<p dir=\"ltr\">To bring this all together into one place, I\u2019ve brought all these metrics together in one place. \u00a0Not all may applicable to your environment, but they all \u201cmight\u201d be and should be understood for your application:<\/p>\n<div dir=\"ltr\" style=\"margin-left: 0pt\">\n<table style=\"border: none\">\n<thead>\n<tr>\n<th style=\"vertical-align: top\"><\/th>\n<th style=\"vertical-align: top\"><strong>Metrics within Couchbase:<\/strong><\/th>\n<th style=\"vertical-align: top\"><strong>External to Couchbase<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"vertical-align: top\"><strong>RAM:<\/strong><\/td>\n<td style=\"vertical-align: top\">\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">items<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">memory used<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">high watermark<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">cache miss ratio<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">active docs resident %<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">temp OOM per sec.<\/span><\/li>\n<\/ul>\n<\/td>\n<td style=\"vertical-align: top\">\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">free RAM<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">swap usage<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">memcached RAM usage<\/span>\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">divergence from memory used<\/span><\/li>\n<\/ul>\n<\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">beam.smp\/erl.exe RAM usage<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"vertical-align: top\"><strong>Disk IO:<\/strong><\/td>\n<td style=\"vertical-align: top\">\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">disk write queue<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">disk creates\/updates\/reads per sec<\/span><\/li>\n<\/ul>\n<\/td>\n<td style=\"vertical-align: top\">\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">Utilization (\u2018iostat\u2019)<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"vertical-align: top\"><strong>Disk Space:<\/strong><\/td>\n<td style=\"vertical-align: top\">\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">docs\/views total disk size<\/span><\/li>\n<\/ul>\n<\/td>\n<td style=\"vertical-align: top\">\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">Free space (\u2018df\u2019)<\/span>\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">data directory<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">views directory<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">root\/install partition<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"vertical-align: top\"><strong>CPU:<\/strong><\/td>\n<td style=\"vertical-align: top\"><\/td>\n<td style=\"vertical-align: top\">\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">CPU usage:<\/span>\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">overall<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">memcached<\/span><\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">beam.smp\/erl.exe<\/span><\/li>\n<\/ul>\n<\/li>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">\u201cstolen time\u201d<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"vertical-align: top\"><strong>Network:<\/strong><\/td>\n<td style=\"vertical-align: top\">\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">Items within TAP queue<\/span><\/li>\n<\/ul>\n<\/td>\n<td style=\"vertical-align: top\">\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">Network bandwidth<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"vertical-align: top\"><strong>Data Distribution:<\/strong><\/td>\n<td style=\"vertical-align: top\">\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">Number of active and replica vbuckets<\/span><\/li>\n<\/ul>\n<\/td>\n<td style=\"vertical-align: top\"><\/td>\n<\/tr>\n<tr>\n<td style=\"vertical-align: top\"><strong>XDCR:<\/strong><\/td>\n<td style=\"vertical-align: top\">\n<ul>\n<li dir=\"ltr\"><span style=\"background-color: transparent\">Outbound XDCR mutations<\/span><\/li>\n<\/ul>\n<\/td>\n<td style=\"vertical-align: top\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p dir=\"ltr\">Thanks for sticking with me on this journey, I hope it\u2019s been useful. \u00a0Please don\u2019t hesitate to reach out to me directly or the Couchbase team if you have any questions or concerns or would like some specific attention on your environment.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Welcome back everyone, this will be the last post in this series around sizing. \u00a0In the previous posts I provided an overview of the considerations when sizing a Couchbase Server cluster, a deeper look at how various features\/versions affect this [&hellip;]<\/p>\n","protected":false},"author":24,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816],"tags":[1329,1330,1335,1331,1327,1328,1326],"ppma_author":[8969],"class_list":["post-1632","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","tag-cpu","tag-disk","tag-monitoring","tag-network","tag-nodes","tag-ram","tag-sizing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How Many Nodes? Part 4: Monitoring for Sizing - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How Many Nodes? Part 4: Monitoring for Sizing\" \/>\n<meta property=\"og:description\" content=\"Welcome back everyone, this will be the last post in this series around sizing. \u00a0In the previous posts I provided an overview of the considerations when sizing a Couchbase Server cluster, a deeper look at how various features\/versions affect this [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T19:33:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:50:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lh5.googleusercontent.com\/eYeezjFmeaYICnU5Qtsvt6O8KEf02pUopySyjwtBejomBt8Ea0VODTxFhgGJlGB_e1DX_3NTGMe6i2mJHD47hXWtD4oCZci2eEGJlTjHvrGzXiveL0HNaxnlchDg_Q\" \/>\n<meta name=\"author\" content=\"Perry Krug\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Perry Krug\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/\"},\"author\":{\"name\":\"Perry Krug\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/d75b855801e89467ae2cfe0caef39a15\"},\"headline\":\"How Many Nodes? Part 4: Monitoring for Sizing\",\"datePublished\":\"2014-12-16T19:33:30+00:00\",\"dateModified\":\"2025-06-14T06:50:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/\"},\"wordCount\":2538,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"cpu\",\"disk\",\"monitoring\",\"network\",\"Nodes\",\"ram\",\"Sizing\"],\"articleSection\":[\"Couchbase Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/\",\"name\":\"How Many Nodes? Part 4: Monitoring for Sizing - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T19:33:30+00:00\",\"dateModified\":\"2025-06-14T06:50:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How Many Nodes? Part 4: Monitoring for Sizing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/d75b855801e89467ae2cfe0caef39a15\",\"name\":\"Perry Krug\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/07fdef12afbaed73ed2879a6d989ae12\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d526d9acbd39623c0a9c0443617ab51bc75b0d8118706229ff946cea1a223257?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d526d9acbd39623c0a9c0443617ab51bc75b0d8118706229ff946cea1a223257?s=96&d=mm&r=g\",\"caption\":\"Perry Krug\"},\"description\":\"Perry Krug is the Head of Developer Experience at Couchbase. He has been with Couchbase for over 13 years and has been working with high-performance caching and database systems for over 17.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/perry-krug\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How Many Nodes? Part 4: Monitoring for Sizing - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/","og_locale":"en_US","og_type":"article","og_title":"How Many Nodes? Part 4: Monitoring for Sizing","og_description":"Welcome back everyone, this will be the last post in this series around sizing. \u00a0In the previous posts I provided an overview of the considerations when sizing a Couchbase Server cluster, a deeper look at how various features\/versions affect this [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T19:33:30+00:00","article_modified_time":"2025-06-14T06:50:12+00:00","og_image":[{"url":"https:\/\/lh5.googleusercontent.com\/eYeezjFmeaYICnU5Qtsvt6O8KEf02pUopySyjwtBejomBt8Ea0VODTxFhgGJlGB_e1DX_3NTGMe6i2mJHD47hXWtD4oCZci2eEGJlTjHvrGzXiveL0HNaxnlchDg_Q","type":"","width":"","height":""}],"author":"Perry Krug","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Perry Krug","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/"},"author":{"name":"Perry Krug","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/d75b855801e89467ae2cfe0caef39a15"},"headline":"How Many Nodes? Part 4: Monitoring for Sizing","datePublished":"2014-12-16T19:33:30+00:00","dateModified":"2025-06-14T06:50:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/"},"wordCount":2538,"commentCount":3,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["cpu","disk","monitoring","network","Nodes","ram","Sizing"],"articleSection":["Couchbase Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/","url":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/","name":"How Many Nodes? Part 4: Monitoring for Sizing - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T19:33:30+00:00","dateModified":"2025-06-14T06:50:12+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/how-many-nodes-part-4-monitoring-sizing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How Many Nodes? Part 4: Monitoring for Sizing"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/d75b855801e89467ae2cfe0caef39a15","name":"Perry Krug","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/07fdef12afbaed73ed2879a6d989ae12","url":"https:\/\/secure.gravatar.com\/avatar\/d526d9acbd39623c0a9c0443617ab51bc75b0d8118706229ff946cea1a223257?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d526d9acbd39623c0a9c0443617ab51bc75b0d8118706229ff946cea1a223257?s=96&d=mm&r=g","caption":"Perry Krug"},"description":"Perry Krug is the Head of Developer Experience at Couchbase. He has been with Couchbase for over 13 years and has been working with high-performance caching and database systems for over 17.","url":"https:\/\/www.couchbase.com\/blog\/author\/perry-krug\/"}]}},"authors":[{"term_id":8969,"user_id":24,"is_guest":0,"slug":"perry-krug","display_name":"Perry Krug","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/d526d9acbd39623c0a9c0443617ab51bc75b0d8118706229ff946cea1a223257?s=96&d=mm&r=g","author_category":"","last_name":"Krug","first_name":"Perry","job_title":"","user_url":"","description":"Perry Krug is an Architect in the Office of the CTO focused on customer solutions. He has been with Couchbase for over 8 years and has been working with high-performance caching and database systems for over 12 years."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=1632"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1632\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=1632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=1632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=1632"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}