kubernetes 清除分片群集中的MongoDB缓存

jhkqcmku  于 2023-02-07  发布在  Kubernetes
关注(0)|答案(1)|浏览(169)

我在AWS EKS集群上部署了一个自托管MongoDB,版本为1.24
每次我在集群上放置一些工作负载时,MongoDB碎片都会消耗节点的大部分RAM。我在t3.medium示例上运行,每个碎片使用大约2GB。由于每个节点上有多个碎片,它只会填充内存,节点变得不可用。
我尝试将WiredTiger缓存大小限制为0.25GB,但似乎不起作用。
我也尝试过用db.collection.getPlanCache().clear手动清除该高速缓存,但它什么也没做。
db.collection.getPlanCache().list()返回空数组。
我也试过检查存储引擎,但是在mongoshell中db.serverStatus().wiredTigerdb.serverStatus().storageEngine都是undefined
我使用的是bitnami mongodb-shardedchart,当前值为:

mongodb-sharded:
  shards: 8
  shardsvr:
    persistence:
      resourcePolicy: "keep"
      enabled: true
      size: 100Gi
  configsvr:
    replicaCount: 2
  mongos:
    replicaCount: 2
    configCM: mongos-configmap

mongos的配置图是这样的

apiVersion: v1
kind: ConfigMap
metadata:
  name: mongos-configmap
data:
  mongo.conf: |
    storage:
      wiredTiger:
        engineConfig:
          cacheSizeGB: 0.25
      inMemory:
        engineConfig:
          inMemorySizeGB: 0.25
mpgws1up

mpgws1up1#

解决了各种问题:
1.我在ConfigMap-〉mongo.conf而不是mongos.conf中有错别字,这意味着它正在创建一个不同的未使用的配置文件。

  1. mongos不是带有存储引擎的:它位于mongod(碎片)上,因此配置应该放在shardsvr.dataNode.configCM
    1.设置自定义配置意味着我将覆盖bitnami部署的默认配置-〉您需要复制所有配置,然后根据需要进行修改。
    在我的示例中,这就是我如何设置values.yaml
shardsvr:
    dataNode:
      mongodbExtraFlags:
        - "--wiredTigerCacheSizeGB .3"

另一个注意事项:db.serverStatus().storageEnginedb.serverStatus().wiredTiger之所以是undefined,是因为我运行的是MongoDBCompass中的mongosh,它实际上连接到mongos(没有存储引擎)
相反,如果您将shell转换到其中一个碎片中,并运行mongosh(在我的例子中,它位于/opt/bitnami/monogdb/bin/),则命令可以正常工作。

相关问题