From c7e412c997b29ee2f0aa8110cb1232580749ff9c Mon Sep 17 00:00:00 2001 From: Shwetha Rao Date: Sat, 26 Jul 2025 08:59:09 +0530 Subject: [PATCH 01/11] first-commit --- modules/learn/pages/buckets-memory-and-storage/memory.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/learn/pages/buckets-memory-and-storage/memory.adoc b/modules/learn/pages/buckets-memory-and-storage/memory.adoc index cba12609f1..3d71f696d2 100644 --- a/modules/learn/pages/buckets-memory-and-storage/memory.adoc +++ b/modules/learn/pages/buckets-memory-and-storage/memory.adoc @@ -157,6 +157,7 @@ See xref:cli:cbepctl/set-flush_param.adoc[set flush_param]. == Expiry Pager Scans for items that have expired, and erases them from memory and disk; after which, a _tombstone_ remains for a default period of 3 days. + The expiry pager runs every 10 minutes by default: for information on changing the interval, see `cbepctl` xref:cli:cbepctl/set-flush_param.adoc[set flush_param]. For more information on item-deletion and tombstones, see xref:data/expiration.adoc[Expiration]. From e3d1fa1b19ca0a94f2794894104c80549549ce9b Mon Sep 17 00:00:00 2001 From: Shwetha Rao Date: Wed, 30 Jul 2025 12:23:15 +0530 Subject: [PATCH 02/11] draft-1 --- .../partials/new-features-80.adoc | 2 + .../tunableMemory.png | Bin 20372 -> 156314 bytes .../buckets-memory-and-storage/memory.adoc | 51 ++- .../rest-api/pages/rest-bucket-create.adoc | 221 +++++++++++- .../partials/get_bucket_travel_sample.json | 331 ++++++------------ 5 files changed, 366 insertions(+), 239 deletions(-) diff --git a/modules/introduction/partials/new-features-80.adoc b/modules/introduction/partials/new-features-80.adoc index 862dc329db..1302e48d13 100644 --- a/modules/introduction/partials/new-features-80.adoc +++ b/modules/introduction/partials/new-features-80.adoc @@ -36,6 +36,8 @@ The following settings have been added to the `/pools/default/buckets` REST APIs |85 |=== +For more information, see the xref:rest-api:rest-bucket-create.adoc[Creating and Editing Buckets] and xref:learn:buckets-memory-and-storage/memory.adoc[Memory]. + https://jira.issues.couchbase.com/browse/MB-61946[MB-61946]:: The `/pools/default/nodeServices` endpoint results now include the UUID and name of the cluster. + diff --git a/modules/learn/assets/images/buckets-memory-and-storage/tunableMemory.png b/modules/learn/assets/images/buckets-memory-and-storage/tunableMemory.png index 7869c030a8ab09f7692d7332514c97696d7eded4..2d57596505c225ca83bba7d873991460480168b0 100644 GIT binary patch literal 156314 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

1gF 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 Vk8x&Ba4-Bff6k)W5i?iq{XgOV&aeOg literal 20372 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: -d allowedTimePeriod[toHour]= -d allowedTimePeriod[toMinute]= -d allowedTimePeriod[abortOutside]=[ true | false ] + -d accessScannerEnabled=[ true | false ] + -d expiryPagerSleepTime= + -d warmupBehavior=[ background | blocking | none ] + -d memoryLowWatermark= + -d memoryHighWatermark= ---- All parameters are described in the following subsections. @@ -101,8 +106,8 @@ They include: ** Parameters that _can_ be edited after bucket creation; these being xref:rest-api:rest-bucket-create.adoc#evictionpolicy[evictionPolicy], xref:rest-api:rest-bucket-create.adoc#durabilityminlevel[durabilityMinLevel], xref:rest-api:rest-bucket-create.adoc#threadsnumber[threadsNumber], xref:rest-api:rest-bucket-create.adoc#rank[rank], xref:rest-api:rest-bucket-create.adoc#replicanumber[replicaNumber], xref:rest-api:rest-bucket-create.adoc#compressionmode[compressionMode], xref:rest-api:rest-bucket-create.adoc#maxttl[maxTTL], xref:rest-api:rest-bucket-create.adoc#flushenabled[flushEnabled], xref:rest-api:rest-bucket-create.adoc#magmaseqtreedatablocksize[magmaSeqTreeDataBlockSize], xref:rest-api:rest-bucket-create.adoc#historyretentioncollectiondefault[historyRetentionCollectionDefault], -xref:rest-api:rest-bucket-create.adoc#historyretentionbytes[historyRetentionBytes], xref:rest-api:rest-bucket-create.adoc#storagebackend[storageBackend], and -xref:rest-api:rest-bucket-create.adoc#historyretentionseconds[historyRetentionSeconds]. +xref:rest-api:rest-bucket-create.adoc#historyretentionbytes[historyRetentionBytes], xref:rest-api:rest-bucket-create.adoc#storagebackend[storageBackend], +xref:rest-api:rest-bucket-create.adoc#historyretentionseconds[historyRetentionSeconds], xref:rest-api:rest-bucket-create.adoc#accessscannerenabled[accessScannerEnabled], xref:rest-api:rest-bucket-create.adoc#expirypagersleeptime[expiryPagerSleepTime], xref:rest-api:rest-bucket-create.adoc#warmupbehavior[warmupBehavior], xref:rest-api:rest-bucket-create.adoc#memorylowwatermark[memoryLowWatermark], and xref:rest-api:rest-bucket-create.adoc#memoryhighwatermark[memoryHighWatermark]. ** Parameters that _cannot_ be edited after bucket creation; these being xref:rest-api:rest-bucket-create.adoc#buckettype[bucketType], xref:rest-api:rest-bucket-create.adoc#replicaindex[replicaIndex], and xref:rest-api:rest-bucket-create.adoc#conflictresolutiontype[conflictResolutionType]. @@ -830,6 +835,218 @@ curl -v -X POST http://localhost:8091/pools/default/buckets/testBucket \ Success returns `200 OK`. +[#accessscannerenabled] +=== accessScannerEnabled + +Specifies whether the Access Scanner is enabled for the bucket. +The value can be either `true` (which is the default) or `false`. + +The access scanner periodically logs the most frequently used keys, allowing the Server to prioritize loading these documents into memory during warmup. + +For information on the Access Scanner, see xref:learn:buckets-memory-and-storage/memory.adoc#initialization-and-warmup[Initialization and Warmup]. + +This parameter can be modified after a bucket is created. + +[#example-accessscannerenabled-create] +==== Example: Enable Access Scanner, when Creating + +The following example creates a new bucket, named `testBucket`, and enables the Access Scanner. + +---- +curl -v -X POST http://localhost:8091/pools/default/buckets \ +-u Administrator:password \ +-d name=testBucket \ +-d ramQuota=1100 \ +-d storageBackend=magma \ +-d accessScannerEnabled=true +---- + +Success returns `202 Accepted`. + +[#example-accessscannerenabled-edit] +==== Example: Modify Access Scanner Enablement, when Editing + +The following example changes the Access Scanner setting for the existing bucket `testBucket`. It sets `accessScannerEnabled` to `false`, which disables the Access Scanner. + +---- +curl -v -X POST http://10.143.201.101:8091/pools/default/buckets/testBucket \ +-u Administrator:password \ +-d accessScannerEnabled=false +---- + +If successful, the call returns a `200 OK` notification. +No object is returned. + +[#expirypagersleeptime] +=== expiryPagerSleepTime + +Specifies the sleep time for the expiry pager in seconds. +The default value is `600` (10 minutes). + +This parameter can be modified after a bucket is created. + +[#example-expirypagersleeptime-create] +==== Example: Set Expiry Pager Sleep Time, when Creating + +The following example creates a new bucket, named `testBucket`, and sets the expiry pager sleep time to `300` seconds (5 minutes). + +---- +curl -v -X POST http://localhost:8091/pools/default/buckets \ +-u Administrator:password \ +-d name=testBucket \ +-d ramQuota=1100 \ +-d storageBackend=magma \ +-d expiryPagerSleepTime=300 +---- + +Success returns `202 Accepted`. + +[#example-expirypagersleeptime-edit] +==== Example: Modify Expiry Pager Sleep Time, when Editing + +The following example changes the expiry pager sleep time for the existing bucket `testBucket`. It sets `expiryPagerSleepTime` to `360` seconds (6 minutes). + +---- +curl -v -X POST http://10.143.201.101:8091/pools/default/buckets/testBucket \ +-u Administrator:password \ +-d expiryPagerSleepTime=360 +---- + +If successful, the call returns a `200 OK` notification. +No object is returned. + +[#warmupbehavior] +=== warmupBehavior + +Specifies the warmup behavior for the bucket. + +Warmup behavior in Server is the process that loads data from disk into memory when a bucket or node starts up. +For more information, see xref:learn:buckets-memory-and-storage/memory.adoc#initialization-and-warmup[Initialization and Warmup]. + +The values can be: + +* `background` (default, Warmup now loads items in the background, allowing the bucket to have write availability much quicker than blocking.) +* `blocking` (to block all operations and load all data until warmup is complete, before the bucket becomes available) +* `none` (to disable completely) + +[#example-warmupbehavior-create] +==== Example: Set Warmup Behavior, when Creating + +The following example creates a new bucket, named `testBucket`, and sets the warmup behavior to `blocking`. + +---- +curl -v -X POST http://localhost:8091/pools/default/buckets \ +-u Administrator:password \ +-d name=testBucket \ +-d ramQuota=1100 \ +-d storageBackend=magma \ +-d warmupBehavior=blocking +---- + +If successful, the call returns `202 Accepted`. + +[#example-warmupbehavior-edit] +==== Example: Modify Warmup Behavior, when Editing + +The following example changes the warmup behavior for the existing bucket `testBucket`. It sets `warmupBehavior` to `none`. + +---- +curl -v -X POST http://10.143.201.101:8091/pools/default/buckets/testBucket \ +-u Administrator:password \ +-d warmupBehavior=none +---- + +If successful, the call returns a `200 OK` notification. +No object is returned. + +[#memorylowwatermark] +=== memoryLowWatermark + +If a bucket’s memory quota is exceeded, items may be ejected from the bucket by the Data Service. + +The `memoryLowWatermark` value defines the low memory watermark for a bucket. +When item ejection is triggered by reaching the high watermark, data is removed until the memory usage falls back to the `memoryLowWatermark` threshold, ensuring efficient memory management. +For more information, see xref:learn:buckets-memory-and-storage/memory.adoc#ejection[Ejection]. + +The value is an integer between `50` to `89`. +`75` is the default value. + +This parameter can be modified after a bucket is created. + +[#example-memorylowwatermark-create] +==== Example: Set Memory Low Watermark, when Creating + +The following example creates a new bucket, named `testBucket`, and sets the memory low watermark to `60`. + +---- +curl -v -X POST http://localhost:8091/pools/default/buckets \ +-u Administrator:password \ +-d name=testBucket \ +-d ramQuota=1100 \ +-d storageBackend=magma \ +-d memoryLowWatermark=60 +---- + +Success returns `202 Accepted`. + +[#example-memorylowwatermark-edit] +==== Example: Modify Memory Low Watermark, when Editing + +The following example changes the memory low watermark for the existing bucket `testBucket`. It sets `memoryLowWatermark` to `70`. + +---- +curl -v -X POST http://10.143.201.101:8091/pools/default/buckets/testBucket \ +-u Administrator:password \ +-d memoryLowWatermark=70 +---- + +If successful, the call returns a `200 OK` notification. +No object is returned. + +[#memoryhighwatermark] +=== memoryHighWatermark + +If a bucket’s memory quota is exceeded, items may be ejected from the bucket by the Data Service. + +The `mem_high_wat` value defines the high memory watermark for a Couchbase bucket. +When memory usage reaches this threshold, the Data Service begins ejecting items to reduce memory consumption, or stops ingesting data if enough space cannot be freed. +For more information, see xref:learn:buckets-memory-and-storage/memory.adoc#ejection[Ejection]. + +The value is an integer between `51` to `90`. +`85` is the default value. + +This parameter can be modified after a bucket is created. + +[#example-memoryhighwatermark-create] +==== Example: Set Memory High Watermark, when Creating + +The following example creates a new bucket, named `testBucket`, and sets the memory high watermark to `80`. + +---- +curl -v -X POST http://localhost:8091/pools/default/buckets \ +-u Administrator:password \ +-d name=testBucket \ +-d ramQuota=1100 \ +-d storageBackend=magma \ +-d memoryHighWatermark=80 +---- + +If successful, the call returns `202 Accepted`. + +[#example-memoryhighwatermark-edit] +==== Example: Modify Memory High Watermark, when Editing + +The following example changes the memory high watermark for the existing bucket `testBucket`. It sets `memoryHighWatermark` to `75`. + +---- +curl -v -X POST http://10.143.201.101:8091/pools/default/buckets/testBucket \ +-u Administrator:password \ +-d memoryHighWatermark=75 +---- + +If successful, the call returns a `200 OK` notification. +No object is returned. + [#auto-compaction-parameters] == Auto-Compaction Parameters diff --git a/modules/rest-api/partials/get_bucket_travel_sample.json b/modules/rest-api/partials/get_bucket_travel_sample.json index bbe2812419..066ed415a3 100644 --- a/modules/rest-api/partials/get_bucket_travel_sample.json +++ b/modules/rest-api/partials/get_bucket_travel_sample.json @@ -2,25 +2,27 @@ "name": "travel-sample", "nodeLocator": "vbucket", "bucketType": "membase", - "storageBackend": "couchstore", - "uuid": "85ff541d1f4cfbc9e67cda3db698cac6", - "uri": "/pools/default/buckets/travel-sample?bucket_uuid=85ff541d1f4cfbc9e67cda3db698cac6", - "streamingUri": "/pools/default/bucketsStreaming/travel-sample?bucket_uuid=85ff541d1f4cfbc9e67cda3db698cac6", - "numVBuckets": 1024, + "storageBackend": "magma", + "uuid": "d7d17aa7e2e901619561b57342b3c0e8", + "uri": "/pools/default/buckets/travel-sample?bucket_uuid=d7d17aa7e2e901619561b57342b3c0e8", + "streamingUri": "/pools/default/bucketsStreaming/travel-sample?bucket_uuid=d7d17aa7e2e901619561b57342b3c0e8", + "numVBuckets": 64, "bucketCapabilitiesVer": "", "bucketCapabilities": [ "collections", "durableWrite", "tombstonedUserXAttrs", - "couchapi", "subdoc.ReplaceBodyWithXattr", "subdoc.DocumentMacroSupport", "subdoc.ReviveDocument", + "nonDedupedHistory", "dcp.IgnorePurgedTombstones", "preserveExpiry", "querySystemCollection", "mobileSystemCollection", "subdoc.ReplicaRead", + "subdoc.BinaryXattr", + "subdoc.AccessDeleted", "rangeScan", "dcp", "cbhello", @@ -30,34 +32,18 @@ "nodesExt", "xattr" ], - "collectionsManifestUid": "2", - "ddocs": { - "uri": "/pools/default/buckets/travel-sample/ddocs" - }, + "collectionsManifestUid": "9", "vBucketServerMap": { "hashAlgorithm": "CRC", - "numReplicas": 1, + "numReplicas": 0, "serverList": [ - "node1.:11210", - "node2.:11210", - "node3.:11210" + "[::1]:11210" ], "vBucketMap": [ - [ - 0, - 1 - ], - [ - 0, - 1 - ], - . - . - . - [ - 2, - 1 - ] + [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], + [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], + [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], + [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0], [0] ] }, "localRandomKeyUri": "/pools/default/buckets/travel-sample/localRandomKey", @@ -69,18 +55,21 @@ }, "nodes": [ { - "couchApiBaseHTTPS": "https://node3.:18092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", - "couchApiBase": "http://node3.:8092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", + "couchApiBaseHTTPS": "https://[::1]:18092/travel-sample%2Bd7d17aa7e2e901619561b57342b3c0e8", + "couchApiBase": "http://[::1]:8092/travel-sample%2Bd7d17aa7e2e901619561b57342b3c0e8", "clusterMembership": "active", "recoveryType": "none", "status": "healthy", - "otpNode": "ns_1@node3.", - "hostname": "node3.:8091", - "nodeUUID": "d6bfd3cccf28f3e648bca46cb30ac271", + "otpNode": "ns_1@127.0.0.1", + "thisNode": true, + "hostname": "[::1]:8091", + "nodeUUID": "0b52711a01c3236e06a5eda64c3953b3", "clusterCompatibility": 524288, - "version": "8.0.0-1649-enterprise", - "os": "aarch64-unknown-linux-gnu", - "cpuCount": 4, + "prod": "server", + "prodName": "Couchbase Server", + "version": "8.0.0-3525-enterprise", + "os": "aarch64-apple-darwin23.6.0", + "cpuCount": 8, "ports": { "direct": 11210, "httpsMgmt": 18091, @@ -90,90 +79,17 @@ }, "services": [ "backup", - "index", - "kv", - "n1ql" - ], - "nodeEncryption": false, - "nodeEncryptionClientCertVerification": false, - "addressFamilyOnly": false, - "configuredHostname": "node3.:8091", - "addressFamily": "inet", - "externalListeners": [ - { - "afamily": "inet", - "nodeEncryption": false - } - ], - "serverGroup": "Group 1", - "replication": 1, - "nodeHash": 48264202, - "systemStats": { - "cpu_utilization_rate": 10.20000000018626, - "cpu_stolen_rate": 0, - "swap_total": 2147479552, - "swap_used": 396525568, - "mem_total": 8327258112, - "mem_free": 1855406080, - "mem_limit": 8327258112, - "cpu_cores_available": 4, - "allocstall": 37181 - }, - "interestingStats": { - "cmd_get": 0, - "couch_docs_actual_disk_size": 48142369, - "couch_docs_data_size": 32943627, - "couch_spatial_data_size": 0, - "couch_spatial_disk_size": 0, - "couch_views_actual_disk_size": 0, - "couch_views_data_size": 0, - "curr_items": 21189, - "curr_items_tot": 42289, - "ep_bg_fetched": 0, - "get_hits": 0, - "index_data_size": 37010997, - "index_disk_size": 16332886, - "mem_used": 63213008, - "ops": 0, - "vb_active_num_non_resident": 0, - "vb_replica_curr_items": 21100 - }, - "uptime": "788913", - "memoryTotal": 8327258112, - "memoryFree": 1855406080, - "mcdMemoryReserved": 6353, - "mcdMemoryAllocated": 6353 - }, - { - "couchApiBaseHTTPS": "https://node2.:18092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", - "couchApiBase": "http://node2.:8092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", - "clusterMembership": "active", - "recoveryType": "none", - "status": "healthy", - "otpNode": "ns_1@node2.", - "hostname": "node2.:8091", - "nodeUUID": "b737df3d566f6c6ccb2bcafec61e85a2", - "clusterCompatibility": 524288, - "version": "8.0.0-1649-enterprise", - "os": "aarch64-unknown-linux-gnu", - "cpuCount": 4, - "ports": { - "direct": 11210, - "httpsMgmt": 18091, - "httpsCAPI": 18092, - "distTCP": 21100, - "distTLS": 21150 - }, - "services": [ + "cbas", "eventing", "fts", + "index", "kv", "n1ql" ], "nodeEncryption": false, "nodeEncryptionClientCertVerification": false, "addressFamilyOnly": false, - "configuredHostname": "node2.:8091", + "configuredHostname": "127.0.0.1:8091", "addressFamily": "inet", "externalListeners": [ { @@ -182,118 +98,64 @@ } ], "serverGroup": "Group 1", - "replication": 1, - "nodeHash": 34469021, - "systemStats": { - "cpu_utilization_rate": 10.23397660196727, - "cpu_stolen_rate": 0, - "swap_total": 2147479552, - "swap_used": 396525568, - "mem_total": 8327258112, - "mem_free": 1855901696, - "mem_limit": 8327258112, - "cpu_cores_available": 4, - "allocstall": 37181 - }, - "interestingStats": { - "cmd_get": 0, - "couch_docs_actual_disk_size": 56100897, - "couch_docs_data_size": 32866921, - "couch_spatial_data_size": 0, - "couch_spatial_disk_size": 0, - "couch_views_actual_disk_size": 0, - "couch_views_data_size": 0, - "curr_items": 21118, - "curr_items_tot": 42167, - "ep_bg_fetched": 0, - "get_hits": 0, - "mem_used": 63213888, - "ops": 0, - "vb_active_num_non_resident": 0, - "vb_replica_curr_items": 21049 + "replication": 0, + "encryptionAtRestInfo": { + "configuration": { + "dataStatus": "encrypted", + "dekNumber": 1, + "issues": [], + "oldestDekCreationDatetime": "2025-07-24T18:35:38+05:30" + }, + "logs": { + "dataStatus": "unencrypted", + "dekNumber": 0, + "issues": [] + }, + "audits": { + "dataStatus": "unknown", + "dekNumber": 0, + "issues": [] + } }, - "uptime": "788913", - "memoryTotal": 8327258112, - "memoryFree": 1855901696, - "mcdMemoryReserved": 6353, - "mcdMemoryAllocated": 6353 - }, - { - "couchApiBaseHTTPS": "https://node1.:18092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", - "couchApiBase": "http://node1.:8092/travel-sample%2B85ff541d1f4cfbc9e67cda3db698cac6", - "clusterMembership": "active", - "recoveryType": "none", - "status": "healthy", - "otpNode": "ns_1@node1.", - "thisNode": true, - "hostname": "node1.:8091", - "nodeUUID": "87a797d06f374f8006cc4a3a683db4e1", - "clusterCompatibility": 524288, - "version": "8.0.0-1649-enterprise", - "os": "aarch64-unknown-linux-gnu", - "cpuCount": 4, - "ports": { - "direct": 11210, - "httpsMgmt": 18091, - "httpsCAPI": 18092, - "distTCP": 21100, - "distTLS": 21150 + "bucketEncryptionAtRestInfo": { + "dataStatus": "unencrypted", + "dekNumber": 0, + "issues": [] }, - "services": [ - "cbas", - "index", - "kv", - "n1ql" - ], - "nodeEncryption": false, - "nodeEncryptionClientCertVerification": false, - "addressFamilyOnly": false, - "configuredHostname": "node1.:8091", - "addressFamily": "inet", - "externalListeners": [ - { - "afamily": "inet", - "nodeEncryption": false - } - ], - "serverGroup": "Group 1", - "replication": 1, - "nodeHash": 72627629, + "nodeHash": 36910094, "systemStats": { - "cpu_utilization_rate": 10.24295140934561, + "cpu_utilization_rate": 21.51249999995343, "cpu_stolen_rate": 0, - "swap_total": 2147479552, - "swap_used": 396525568, - "mem_total": 8327258112, - "mem_free": 1854889984, - "mem_limit": 8327258112, - "cpu_cores_available": 4, - "allocstall": 37181 + "swap_total": 2147483648, + "swap_used": 1039794176, + "mem_total": 17179869184, + "mem_free": 3679780864, + "mem_limit": 17179869184, + "cpu_cores_available": 8, + "allocstall": 0 }, "interestingStats": { "cmd_get": 0, - "couch_docs_actual_disk_size": 44320702, - "couch_docs_data_size": 32823159, + "couch_docs_actual_disk_size": 61696696, + "couch_docs_data_size": 61696696, "couch_spatial_data_size": 0, "couch_spatial_disk_size": 0, "couch_views_actual_disk_size": 0, "couch_views_data_size": 0, - "curr_items": 21036, - "curr_items_tot": 42230, + "curr_items": 63929, + "curr_items_tot": 63929, "ep_bg_fetched": 0, "get_hits": 0, - "index_data_size": 38186104, - "index_disk_size": 23976600, - "mem_used": 62882016, + "mem_used": 73159424, "ops": 0, "vb_active_num_non_resident": 0, - "vb_replica_curr_items": 21194 + "vb_replica_curr_items": 0 }, - "uptime": "788913", - "memoryTotal": 8327258112, - "memoryFree": 1854889984, - "mcdMemoryReserved": 6353, - "mcdMemoryAllocated": 6353 + "uptime": "36", + "memoryTotal": 17179869184, + "memoryFree": 3679780864, + "mcdMemoryReserved": 13107, + "mcdMemoryAllocated": 13107 } ], "stats": { @@ -303,33 +165,58 @@ }, "authType": "sasl", "autoCompactionSettings": false, - "replicaIndex": false, "rank": 0, "enableCrossClusterVersioning": false, "versionPruningWindowHrs": 720, - "replicaNumber": 1, + "replicaNumber": 0, "threadsNumber": 3, "quota": { - "ram": 629145600, + "ram": 209715200, "rawRAM": 209715200 }, "basicStats": { - "quotaPercentUsed": 30.08984120686849, + "quotaPercentUsed": 29.62976455688477, "opsPerSec": 0, "diskFetches": 0, - "itemCount": 63343, - "diskUsed": 148563968, - "dataUsed": 98633707, - "memUsed": 189308912, + "itemCount": 63340, + "diskUsed": 55880402, + "dataUsed": 55880402, + "memUsed": 62138120, "vbActiveNumNonResident": 0 }, "evictionPolicy": "fullEviction", "durabilityMinLevel": "none", - "pitrEnabled": false, - "pitrGranularity": 600, - "pitrMaxHistoryAge": 86400, + "storageQuotaPercentage": 50, + "historyRetentionSeconds": 0, + "historyRetentionBytes": 0, + "historyRetentionCollectionDefault": true, + "magmaKeyTreeDataBlockSize": 4096, + "magmaSeqTreeDataBlockSize": 4096, + "continuousBackupEnabled": false, + "continuousBackupInterval": 2, + "continuousBackupLocation": "", "conflictResolutionType": "seqno", + "workloadPatternDefault": "undefined", "maxTTL": 0, "compressionMode": "passive", - "accessScannerEnabled": false -} \ No newline at end of file + "expiryPagerSleepTime": 600, + "memoryLowWatermark": 75, + "memoryHighWatermark": 85, + "durabilityImpossibleFallback": "disabled", + "warmupBehavior": "background", + "invalidHlcStrategy": "error", + "hlcMaxFutureThreshold": 3900, + "dcpConnectionsBetweenNodes": 1, + "dcpBackfillIdleProtectionEnabled": true, + "dcpBackfillIdleLimitSeconds": 720, + "dcpBackfillIdleDiskThreshold": 90, + "accessScannerEnabled": true, + "encryptionAtRestInfo": { + "dataStatus": "unencrypted", + "dekNumber": 0, + "issues": [] + }, + "encryptionAtRestKeyId": -1, + "encryptionAtRestDekRotationInterval": 2592000, + "encryptionAtRestDekLifetime": 31536000 +} From 4a8e0f339aeb5f93e7c9ef3e032be9270bc19aa8 Mon Sep 17 00:00:00 2001 From: Shwetha Rao Date: Fri, 1 Aug 2025 11:35:43 +0530 Subject: [PATCH 03/11] removed-old-settings-instances --- .../cli/pages/cbepctl/set-flush_param.adoc | 90 +------------------ .../partials/new-features-80.adoc | 5 +- 2 files changed, 7 insertions(+), 88 deletions(-) diff --git a/modules/cli/pages/cbepctl/set-flush_param.adoc b/modules/cli/pages/cbepctl/set-flush_param.adoc index 671279ef12..1a402d598d 100644 --- a/modules/cli/pages/cbepctl/set-flush_param.adoc +++ b/modules/cli/pages/cbepctl/set-flush_param.adoc @@ -20,22 +20,14 @@ cbepctl [hostname]:11210 -b [bucket-name] -u [administrator-name] -p [administra cbepctl [hostname]:11210 -b [bucket-name] -u [administrator-name] -p [administrator-password] set flush_param alog_task_time [value] ---- -The syntax for disk cleanup is: - ----- -cbepctl [host]:11210 -b [bucket-name] -u [administrator-name] -p [administrator-password] set flush_param exp_pager_stime [value] ----- - The syntax for ejection is: ---- cbepctl [host]:11210 -b [bucket-name] -u [administrator-name] -p [administrator-password] set flush_param [parameter] [value] ---- -Parameters used for changing ejection thresholds: +Parameter used for changing ejection thresholds: -* `mem_low_wat` -* `mem_high_wat` * `pager_active_vb_pcnt` The syntax to set the out of memory threshold is: @@ -69,20 +61,10 @@ The scanner is highly CPU-intensive: therefore, to reduce the cluster-wide impac Note also that if the scanner runs at the same time that index updates are being made (either on the current node, or on one or more other nodes) by the Index Service, the performance of the index updates may be adversely affected. The scanner should be configured to minimize the likelihood of this problem. -exp_pager_stime:: -The `cbepctl flush_param exp_pager_stime` command sets the time interval for disk cleanup. -Couchbase Server does lazy xref:learn:buckets-memory-and-storage/memory.adoc#expiry-pager[expiration], that is, expired items are flagged as deleted rather than being immediately erased. -Couchbase Server has a maintenance process that periodically looks through all information and erases expired items. -By default, this maintenance process runs every 10 minutes, but it can be configured to run at a different interval. -+ -NOTE: The compaction process will also remove expired items. - -mem_low_wat, mem_high_wat, pager_active_vb_pcnt:: +pager_active_vb_pcnt:: xref:learn:buckets-memory-and-storage/memory.adoc#ejection[Ejection] means that documents are removed from RAM but the key and metadata remain. -If the amount of RAM used by items reaches the high water mark (upper threshold), both active and replica data are ejected until the memory usage (amount of RAM consumed) reaches the low water mark (lower threshold). -The server determines that items are not recently used based on a not-recently-used (NRU) value. + -Use the `mem_low_wat`, `mem_high_wat`, and `pager_active_vb_pcnt` settings to change the server thresholds for ejection. +Use `pager_active_vb_pcnt` settings to change the server thresholds for ejection. + WARNING: Do not change the ejection defaults unless required by Couchbase Support. @@ -116,11 +98,6 @@ The following are the command options: | `couch_response_timeout` | timeout in receiving a response from CouchDB. -| `exp_pager_stime` -| Expiry Pager interval. -Time interval that Couchbase Server waits before it performs cleanup and removal of expired items from disk. -Setting this value to `0` will disable the Expiry Pager from running. - | `flushall_enabled` | Deprecated. Enable flush operation. @@ -131,24 +108,12 @@ Enable flush operation. | `max_size` | Maximum memory used by the server. -| `mem_high_wat` -| High water mark in bytes. - -| `mem_low_wat` -| Low water mark in bytes. - | `mutation_mem_threshold` | Amount of RAM that can be consumed in that caching layer before clients start receiving temporary out of memory messages. | `timing_log` | Path to log detailed timing stats. -| `warmup_min_memory_threshold` -| Memory threshold (%) during warmup to enable traffic. - -| `warmup_min_items_threshold` -| Item number threshold (%) during warmup to enable traffic. - | `klog_compactor_queue_cap` | Queue cap to throttle the log compactor. @@ -218,23 +183,6 @@ setting param: alog_task_time 23 set alog_task_time to 23 ---- -*Examples for setting the disk cleanup* - -The following example sets the cleanup process to run every 600 seconds (10 minutes). -This is the interval that Couchbase Server waits before it tries to remove expired items from disk. - ----- -cbepctl 10.5.2.117:11210 -b foo-bucket -u Administrator -p password \ -set flush_param exp_pager_stime 600 ----- - -The following example response shows the cleanup process set to 600 seconds. - ----- -setting param: exp_pager_stime 600 -set exp_pager_stime to 600 ----- - *Examples for setting the out-of-memory error message* In this example, the threshold is reduced to 65% of RAM. @@ -251,30 +199,6 @@ setting param: mutation_mem_threshold 65 set mutation_mem_threshold to 65 ---- -*Example for setting the low water mark* - -The low water mark sets the lower threshold of RAM for a specific bucket on a node. -The item pager stops ejecting items once the low water mark is reached. - -The following example sets the low water mark percentage to 70% of RAM. - ----- -cbepctl 10.5.2.117:11210 -b foo-bucket -u Administrator -p password \ -set flush_param mem_low_wat 70% ----- - -*Example for setting the high water mark* - -The high water mark set the amount of RAM consumed by items that must be breached before infrequently used active and replica items are ejected. - -The following example sets the high water mark percentage to 80% of RAM for a specific bucket on a node. -This means that items in RAM on this node can consume up to 80% of RAM before the item pager begins ejecting items. - ----- -cbepctl 10.5.2.117:11210 -b foo-bucket -u Administrator -p password \ -set flush_param mem_high_wat 80% ----- - *Examples for setting percentage of ejected items* Based on the NRU algorithm, the server ejects active and replica data from a node. @@ -293,15 +217,9 @@ By doing so, active data from a source node is maximized while maintaining incom However, if the server is ejecting a very large percentage of replica data and a node fails, the replica data is not immediately available. In this case, the items are retrieved from disk and put back into RAM before the request is fulfilled. -The following example response shows the low water mark, high water mark, and percentage of ejected items being set. +The following example response shows the percentage of ejected items being set. ---- -setting param: mem_low_wat 70 -set mem_low_wat to 70 - -setting param: mem_high_wat 80 -set mem_high_wat to 80 - setting param: pager_active_vb_pcnt 50 set pager_active_vb_pcnt to 50 ---- diff --git a/modules/introduction/partials/new-features-80.adoc b/modules/introduction/partials/new-features-80.adoc index 1302e48d13..243dd7d425 100644 --- a/modules/introduction/partials/new-features-80.adoc +++ b/modules/introduction/partials/new-features-80.adoc @@ -6,7 +6,6 @@ https://jira.issues.couchbase.com/browse/MB-61457[MB-61457]:: The following settings have been added to the `/pools/default/buckets` REST APIs. + - |=== |Argument Name |Type |Valid values |Default @@ -35,7 +34,9 @@ The following settings have been added to the `/pools/default/buckets` REST APIs |51 to 90 |85 |=== - ++ + The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are deprecated, and replaced by the above new settings. ++ For more information, see the xref:rest-api:rest-bucket-create.adoc[Creating and Editing Buckets] and xref:learn:buckets-memory-and-storage/memory.adoc[Memory]. https://jira.issues.couchbase.com/browse/MB-61946[MB-61946]:: From 8cef687c2480a640b6b869a1c5ac4686ec8cd321 Mon Sep 17 00:00:00 2001 From: Shwetha Rao Date: Fri, 1 Aug 2025 11:38:50 +0530 Subject: [PATCH 04/11] extra-indentation-removed --- .../rest-api/pages/rest-bucket-create.adoc | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/rest-api/pages/rest-bucket-create.adoc b/modules/rest-api/pages/rest-bucket-create.adoc index c8885c988e..f54c9e1fda 100644 --- a/modules/rest-api/pages/rest-bucket-create.adoc +++ b/modules/rest-api/pages/rest-bucket-create.adoc @@ -67,17 +67,17 @@ curl -X POST -u : -d historyRetentionBytes= -d historyRetentionSeconds= -d autoCompactionDefined=[ true | false ] - -d parallelDBAndViewCompaction=[ true | false ] - -d databaseFragmentationThreshold[percentage]= - -d databaseFragmentationThreshold[size]= - -d viewFragmentationThreshold[percentage]= - -d viewFragmentationThreshold[size]= - -d purgeInterval=[ | ] - -d allowedTimePeriod[fromHour]= - -d allowedTimePeriod[fromMinute]= - -d allowedTimePeriod[toHour]= - -d allowedTimePeriod[toMinute]= - -d allowedTimePeriod[abortOutside]=[ true | false ] + -d parallelDBAndViewCompaction=[ true | false ] + -d databaseFragmentationThreshold[percentage]= + -d databaseFragmentationThreshold[size]= + -d viewFragmentationThreshold[percentage]= + -d viewFragmentationThreshold[size]= + -d purgeInterval=[ | ] + -d allowedTimePeriod[fromHour]= + -d allowedTimePeriod[fromMinute]= + -d allowedTimePeriod[toHour]= + -d allowedTimePeriod[toMinute]= + -d allowedTimePeriod[abortOutside]=[ true | false ] -d accessScannerEnabled=[ true | false ] -d expiryPagerSleepTime= -d warmupBehavior=[ background | blocking | none ] From 5bcc8c5152add1e80b2ba4d90f5c410742c77ce2 Mon Sep 17 00:00:00 2001 From: Shwetha Rao Date: Fri, 1 Aug 2025 12:37:18 +0530 Subject: [PATCH 05/11] minor-edit --- modules/introduction/partials/new-features-80.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/introduction/partials/new-features-80.adoc b/modules/introduction/partials/new-features-80.adoc index 243dd7d425..8fbac28e3c 100644 --- a/modules/introduction/partials/new-features-80.adoc +++ b/modules/introduction/partials/new-features-80.adoc @@ -35,7 +35,7 @@ The following settings have been added to the `/pools/default/buckets` REST APIs |85 |=== + - The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are deprecated, and replaced by the above new settings. +The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are deprecated, and replaced by the above new settings. + For more information, see the xref:rest-api:rest-bucket-create.adoc[Creating and Editing Buckets] and xref:learn:buckets-memory-and-storage/memory.adoc[Memory]. From d00cf649db61d7e093ff4d14c2da3f2fd579766d Mon Sep 17 00:00:00 2001 From: Shwetha Rao Date: Fri, 8 Aug 2025 11:45:14 +0530 Subject: [PATCH 06/11] implemented-pm-review-inputs --- modules/cli/pages/cbepctl/set-flush_param.adoc | 12 ++++++++++-- modules/introduction/partials/new-features-80.adoc | 10 ++++++++-- .../pages/buckets-memory-and-storage/memory.adoc | 11 ++++++++++- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/modules/cli/pages/cbepctl/set-flush_param.adoc b/modules/cli/pages/cbepctl/set-flush_param.adoc index 1a402d598d..0d53f2046f 100644 --- a/modules/cli/pages/cbepctl/set-flush_param.adoc +++ b/modules/cli/pages/cbepctl/set-flush_param.adoc @@ -42,11 +42,19 @@ Tune the dynamic shared thread pool performance by changing the thread types ins The command [.cmd]`set flush_param` adjusts the number of threads that prioritize read, write, non-i/o and auxiliary-i/o operations. These settings take effect immediately and do not require that the bucket be restarted. -NOTE: The settings for threads number take effect only if the underlying operating system has a sufficient number of CPU cores. +[NOTE] +==== +* The settings for threads number take effect only if the underlying operating system has a sufficient number of CPU cores. The minimum number of CPU cores is four (4), but three (3) additional cores are required for each additional writer thread. For example, five (5) writer threads is a valid setting if the underlying hardware has at least sixteen (16) cores. -NOTE: Changes of thresholds are NOT persistent and must be reapplied after the bucket warmup. +* Changes of thresholds are NOT persistent and must be reapplied after the bucket warmup. + +* The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are removed, and no more supported through `cbepctl`. ++ +These settings are replaced by new settings `expiryPagerSleepTime`, `warmupBehavior`, `memoryLowWatermark`, and `memoryHighWatermark`, which can be configured using REST APIs. +See xref:rest-api/rest-bucket-create.adoc[Creating and Editing Buckets]. +==== alog_sleep_time, alog_task_time:: Couchbase Server has an optimized xref:learn:buckets-memory-and-storage/memory.adoc#initialization-and-warmup[disk warmup]. diff --git a/modules/introduction/partials/new-features-80.adoc b/modules/introduction/partials/new-features-80.adoc index 8fbac28e3c..e56d3e3856 100644 --- a/modules/introduction/partials/new-features-80.adoc +++ b/modules/introduction/partials/new-features-80.adoc @@ -35,9 +35,12 @@ The following settings have been added to the `/pools/default/buckets` REST APIs |85 |=== + -The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are deprecated, and replaced by the above new settings. -+ +The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are removed from `cbepctl`. +The above new settings are added and made accessible through the REST API. For more information, see the xref:rest-api:rest-bucket-create.adoc[Creating and Editing Buckets] and xref:learn:buckets-memory-and-storage/memory.adoc[Memory]. ++ +The same changes in the warmup behavior settings are applicable to the Data Services. +For more information, see xref:introduction:partials/new-features-80.adoc#section-new-feature-data-service[MB-9418]. https://jira.issues.couchbase.com/browse/MB-61946[MB-61946]:: The `/pools/default/nodeServices` endpoint results now include the UUID and name of the cluster. @@ -94,6 +97,9 @@ Warmup behaves the same as it did before with no background warmup Warmup now loads items in the background, allowing the bucket to have write availability much quicker than blocking. `none`::: Warmup is disabled; the bucket comes online with no items loaded. ++ +The same changes in the warmup behavior settings are applicable to the Couchbase Cluster. +For more information, see xref:introduction:partials/new-features-80.adoc#section-new-feature-800-couchbase-cluster[MB-61457]. https://jira.issues.couchbase.com/browse/MB-64071[MB-64071]:: Couchbase Server has a new metric diff --git a/modules/learn/pages/buckets-memory-and-storage/memory.adoc b/modules/learn/pages/buckets-memory-and-storage/memory.adoc index 28d3ab6dfe..1b0109856a 100644 --- a/modules/learn/pages/buckets-memory-and-storage/memory.adoc +++ b/modules/learn/pages/buckets-memory-and-storage/memory.adoc @@ -114,6 +114,9 @@ If and when data-loading subsequently occurs, the new access log is consulted, t Instead, it deletes any existing access log, and exits. If and when data-loading subsequently occurs, since no access log exists, loading occurs with no priority-order (this being, in cases of extremely high resident ratio, the more performative loading procedure). +NOTE: The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, and enabling access scanner are no more supported through `cbepctl`. +These settings are replaced by a new setting `warmupBehavior` and `accessScannerEnabled`, which can be configured using REST APIs. + [#configuring-the-access-scanner] === Configuring the Access Scanner @@ -125,7 +128,7 @@ NOTE: The access scanner is a highly CPU-intensive process. === Configuring the Warmup Behaviour You can configure the warmup process using the REST API. -For more information, see xref:rest-api:rest-bucket-create.adoc#warmupbehavior[warmupBehavior] +For more information, see xref:rest-api:rest-bucket-create.adoc#warmupbehavior[warmupBehavior]. [#ejection] == Ejection @@ -151,6 +154,9 @@ NOTE: Ejection from Ephemeral buckets removes data without persistence because E For more information about buckets and bucket types, see xref:buckets-memory-and-storage/buckets.adoc[Buckets]. +NOTE: The settings `mem_high_wat`, and `mem_low_wat` are no more supported through `cbepctl`. +These settings are replaced by new settings `memoryLowWatermark` and `memoryHighWatermark`, which can be configured using REST APIs. + For each bucket, available memory is managed according to two _watermarks_, which are `memoryLowWatermark` and `memoryHighWatermark`. If data is continuously loaded into the bucket, its quantity eventually increases to the value indicated by the `memoryLowWatermark` watermark. At this point, no action is taken. @@ -178,6 +184,9 @@ See xref:rest-api:rest-bucket-create.adoc#memorylowwatermark[memoryLowWatermark] Scans for items that have expired, and erases them from memory and disk; after which, a _tombstone_ remains for a default period of 3 days. The expiry pager runs every 10 minutes by default. +NOTE: The setting `exp_pager_stime` is no more supported through `cbepctl`. +This setting is replaced by a new setting `expiryPagerSleepTime`, which can be configured using REST APIs. + For information on changing the interval using the REST API, see xref:rest-api:rest-bucket-create.adoc#expirypagersleeptime[expiryPagerSleepTime]. For more information on item-deletion and tombstones, see xref:data/expiration.adoc[Expiration]. From a095f8dd438cf0fcf1e29e581787c346bd6a6a3a Mon Sep 17 00:00:00 2001 From: Shwetha Rao Date: Fri, 8 Aug 2025 12:36:09 +0530 Subject: [PATCH 07/11] minor-edit --- modules/cli/pages/cbepctl/set-flush_param.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/cli/pages/cbepctl/set-flush_param.adoc b/modules/cli/pages/cbepctl/set-flush_param.adoc index 0d53f2046f..887b20df8c 100644 --- a/modules/cli/pages/cbepctl/set-flush_param.adoc +++ b/modules/cli/pages/cbepctl/set-flush_param.adoc @@ -53,7 +53,7 @@ For example, five (5) writer threads is a valid setting if the underlying hardwa * The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are removed, and no more supported through `cbepctl`. + These settings are replaced by new settings `expiryPagerSleepTime`, `warmupBehavior`, `memoryLowWatermark`, and `memoryHighWatermark`, which can be configured using REST APIs. -See xref:rest-api/rest-bucket-create.adoc[Creating and Editing Buckets]. +See xref:rest-api:rest-bucket-create.adoc[Creating and Editing Buckets]. ==== alog_sleep_time, alog_task_time:: From bd0651f99a00efb16d30c8d1a4d4218aeed6d97c Mon Sep 17 00:00:00 2001 From: Shwetha Rao Date: Mon, 11 Aug 2025 20:46:21 +0530 Subject: [PATCH 08/11] interlinked-whats-new-entries --- modules/introduction/partials/new-features-80.adoc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/introduction/partials/new-features-80.adoc b/modules/introduction/partials/new-features-80.adoc index e56d3e3856..0a37bc7122 100644 --- a/modules/introduction/partials/new-features-80.adoc +++ b/modules/introduction/partials/new-features-80.adoc @@ -2,7 +2,7 @@ === Couchbase Cluster - +[#anchor-61457] https://jira.issues.couchbase.com/browse/MB-61457[MB-61457]:: The following settings have been added to the `/pools/default/buckets` REST APIs. + @@ -40,7 +40,7 @@ The above new settings are added and made accessible through the REST API. For more information, see the xref:rest-api:rest-bucket-create.adoc[Creating and Editing Buckets] and xref:learn:buckets-memory-and-storage/memory.adoc[Memory]. + The same changes in the warmup behavior settings are applicable to the Data Services. -For more information, see xref:introduction:partials/new-features-80.adoc#section-new-feature-data-service[MB-9418]. +For more information, see xref:anchor-9418[MB-9418]. https://jira.issues.couchbase.com/browse/MB-61946[MB-61946]:: The `/pools/default/nodeServices` endpoint results now include the UUID and name of the cluster. @@ -76,6 +76,7 @@ You can replace them with ephemeral buckets which are similar to Memcached bucke See the https://docs-archive.couchbase.com/server/6.6/learn/buckets-memory-and-storage/buckets.html#bucket-capabilities[Bucket Capabilities in the Version 6.6 documentation] for a summary of the differences between Memcached and ephemeral buckets. If you do not remove your Memcached buckets, the upgrade process reports an error message telling you to remove the Memcached buckets before proceeding. +[#anchor-9418] https://jira.issues.couchbase.com/browse/MB-9418[MB-9418]:: The previous warmup behavior was to load values and not complete warmup until the Bucket reaches one of: + @@ -99,7 +100,7 @@ Warmup now loads items in the background, allowing the bucket to have write avai Warmup is disabled; the bucket comes online with no items loaded. + The same changes in the warmup behavior settings are applicable to the Couchbase Cluster. -For more information, see xref:introduction:partials/new-features-80.adoc#section-new-feature-800-couchbase-cluster[MB-61457]. +For more information, see xref:anchor-61457[MB-61457]. https://jira.issues.couchbase.com/browse/MB-64071[MB-64071]:: Couchbase Server has a new metric From 74ba74e39f632c10ba27aff918aacaf2eeb40577 Mon Sep 17 00:00:00 2001 From: rao-shwe Date: Wed, 13 Aug 2025 14:39:47 +0530 Subject: [PATCH 09/11] minor-edit-in-whats-new --- modules/introduction/partials/new-features-80.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/introduction/partials/new-features-80.adoc b/modules/introduction/partials/new-features-80.adoc index 0a37bc7122..231c9a5310 100644 --- a/modules/introduction/partials/new-features-80.adoc +++ b/modules/introduction/partials/new-features-80.adoc @@ -35,9 +35,9 @@ The following settings have been added to the `/pools/default/buckets` REST APIs |85 |=== + -The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are removed from `cbepctl`. The above new settings are added and made accessible through the REST API. For more information, see the xref:rest-api:rest-bucket-create.adoc[Creating and Editing Buckets] and xref:learn:buckets-memory-and-storage/memory.adoc[Memory]. +The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are removed from `cbepctl`. + The same changes in the warmup behavior settings are applicable to the Data Services. For more information, see xref:anchor-9418[MB-9418]. From e0872df3ba920886370a615f05c824e864a3b148 Mon Sep 17 00:00:00 2001 From: rao-shwe Date: Wed, 13 Aug 2025 18:45:11 +0530 Subject: [PATCH 10/11] editorial-inputs-implemented1 --- modules/cli/pages/cbepctl/set-flush_param.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/cli/pages/cbepctl/set-flush_param.adoc b/modules/cli/pages/cbepctl/set-flush_param.adoc index 887b20df8c..ce87d9adeb 100644 --- a/modules/cli/pages/cbepctl/set-flush_param.adoc +++ b/modules/cli/pages/cbepctl/set-flush_param.adoc @@ -50,7 +50,7 @@ For example, five (5) writer threads is a valid setting if the underlying hardwa * Changes of thresholds are NOT persistent and must be reapplied after the bucket warmup. -* The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are removed, and no more supported through `cbepctl`. +* The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, `exp_pager_stime`, `mem_high_wat`, and `mem_low_wat` are removed, and no longer supported through `cbepctl`. + These settings are replaced by new settings `expiryPagerSleepTime`, `warmupBehavior`, `memoryLowWatermark`, and `memoryHighWatermark`, which can be configured using REST APIs. See xref:rest-api:rest-bucket-create.adoc[Creating and Editing Buckets]. From 13293c42c73638ea698f6ba324c31c36c662e1b7 Mon Sep 17 00:00:00 2001 From: rao-shwe Date: Wed, 13 Aug 2025 18:46:50 +0530 Subject: [PATCH 11/11] editorial-inputs-implemented2 --- .../learn/pages/buckets-memory-and-storage/memory.adoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/learn/pages/buckets-memory-and-storage/memory.adoc b/modules/learn/pages/buckets-memory-and-storage/memory.adoc index 1b0109856a..1466a21528 100644 --- a/modules/learn/pages/buckets-memory-and-storage/memory.adoc +++ b/modules/learn/pages/buckets-memory-and-storage/memory.adoc @@ -102,7 +102,7 @@ Choosing the appropriate warmup behavior lets you balance between quicker bucket On a given Data Service node, a bucket's data is loaded in accordance with determinations made by the _access scanner_. The access scanner periodically identifies the most frequently used keys and writes them to an access log. -During server warmup, Server uses this log to prioritize loading the most-accessed documents into memory. +During server warmup, Couchbase Server uses this log to prioritize loading the most-accessed documents into memory. By default, the access scanner runs every 24 hours at 10:00 AM GMT, but you can adjust its schedule to minimize performance impact and avoid conflicts with index updates. It checks the _resident ratio_ — which is the percentage of items in active and replica vBuckets that are currently in memory on the node: @@ -114,7 +114,7 @@ If and when data-loading subsequently occurs, the new access log is consulted, t Instead, it deletes any existing access log, and exits. If and when data-loading subsequently occurs, since no access log exists, loading occurs with no priority-order (this being, in cases of extremely high resident ratio, the more performative loading procedure). -NOTE: The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, and enabling access scanner are no more supported through `cbepctl`. +NOTE: The settings `warmup_min_items_threshold`, `warmup_min_memory_threshold`, and enabling access scanner are no longer supported through `cbepctl`. These settings are replaced by a new setting `warmupBehavior` and `accessScannerEnabled`, which can be configured using REST APIs. [#configuring-the-access-scanner] @@ -154,7 +154,7 @@ NOTE: Ejection from Ephemeral buckets removes data without persistence because E For more information about buckets and bucket types, see xref:buckets-memory-and-storage/buckets.adoc[Buckets]. -NOTE: The settings `mem_high_wat`, and `mem_low_wat` are no more supported through `cbepctl`. +NOTE: The settings `mem_high_wat`, and `mem_low_wat` are no longer supported through `cbepctl`. These settings are replaced by new settings `memoryLowWatermark` and `memoryHighWatermark`, which can be configured using REST APIs. For each bucket, available memory is managed according to two _watermarks_, which are `memoryLowWatermark` and `memoryHighWatermark`. @@ -184,7 +184,7 @@ See xref:rest-api:rest-bucket-create.adoc#memorylowwatermark[memoryLowWatermark] Scans for items that have expired, and erases them from memory and disk; after which, a _tombstone_ remains for a default period of 3 days. The expiry pager runs every 10 minutes by default. -NOTE: The setting `exp_pager_stime` is no more supported through `cbepctl`. +NOTE: The setting `exp_pager_stime` is no longer supported through `cbepctl`. This setting is replaced by a new setting `expiryPagerSleepTime`, which can be configured using REST APIs. For information on changing the interval using the REST API, see xref:rest-api:rest-bucket-create.adoc#expirypagersleeptime[expiryPagerSleepTime].