Mongodb Kubernetes杀死Mongo集装箱

Mongodb Kubernetes杀死Mongo集装箱,mongodb,docker,kubernetes,Mongodb,Docker,Kubernetes,我们有一种情况,当Mongo容器达到容器的最大内存限制时,Kubernetes正在杀死它。尽管期望K8s以这种方式工作,但感觉Mongo没有重用其内存,因为它每天都在不断增加内存使用量,即使用户负载和事务是相同的,那么我们应该检查如何限制Mongo达到容器的最大内存或定期刷新Mongo内存 我试图增加记忆,这有助于豆荚在K8杀死它之前再运行几天 "containers": [ { "name": "mongo", "i

我们有一种情况,当Mongo容器达到容器的最大内存限制时,Kubernetes正在杀死它。尽管期望K8s以这种方式工作,但感觉Mongo没有重用其内存,因为它每天都在不断增加内存使用量,即使用户负载和事务是相同的,那么我们应该检查如何限制Mongo达到容器的最大内存或定期刷新Mongo内存

我试图增加记忆,这有助于豆荚在K8杀死它之前再运行几天

     "containers": [
          {
            "name": "mongo",
            "image": "dockercentral.com:5870/com.public/mongodb:3.6",
            "ports": [
              {
                "containerPort": 27017,
                "protocol": "TCP"
              }
            ]      
"resources": {
              "limits": {
                "cpu": "1",
                "memory": "24Gi"
              },
              "requests": {
                "cpu": "250m",
                "memory": "24Gi"
              }
            }
   "name": "MONGO_SECURITY",
                "value": "true"
              }
            ],
            "resources": {
              "limits": {
                "cpu": "500m",
                "memory": "1Gi"
              },
              "requests": {
                "cpu": "150m",
                "memory": "256Mi"
              }
            },

根据MongoDB公司的Stennie在对问题的评论中所写的内容

kube.yaml中的这个命令为我工作:

      command:
        - "sh"
        - "-c"
        - >
          echo "storage:" >>  /etc/mongod.conf;
          echo "    wiredTiger:" >>  /etc/mongod.conf;
          echo "       engineConfig:" >>  /etc/mongod.conf;
          echo "          cacheSizeGB: 2" >>  /etc/mongod.conf;
          echo "replication:" >> /etc/mongod.conf;
          echo "  replSetName: YOUR_REPL_NAME" >> /etc/mongod.conf;
          mongod --config /etc/mongod.conf;
还有一种在运行时设置它的方法:

db.adminCommand( { "setParameter": 1, "wiredTigerEngineRuntimeConfig":"cache_size=2G"})
这也很好,但通过kuberneties yaml文件看起来更容易,因为要发出命令,您必须等到mongo启动并运行

注: 确保您的:

      resources:
        limits:
          memory:

允许系统使用额外的1G。

您正在运行哪个特定版本的MongoDB服务器?您是否设置了cacheSizeGB(如果设置了,则设置为什么值)?根据:如果在无法访问系统中所有可用RAM的容器(例如,
lxc
cgroups
、Docker等)中运行
mongod
,则必须将该值设置为小于容器中可用RAM的量。MongoDB 3.6版本,Cache SeZeGb值没有设置,它会考虑容器内存限制和自动分配有线老虎缓存..我已经设置WiReTiGelcAcceSeigb现在…将检查它是否能正常工作存在一些可靠的历史挑战,因此当前建议明确设置
wiredTigerCacheSizeGB
。如果您将
wiredTigerCacheSizeGB
设置为类似于默认值(可用RAM的50%-1GB),则内存使用应该更稳定。注意:MongoDB 4.1.9开发分支中已通过实现了一项改进,该改进已被后移植到即将发布的3.6.13和4.0.9服务器版本中。设置wiredTigerCacheSizeGB有助于解决此问题。。感谢@Stennie。&user2932688 sry的家伙因为回来晚了,我正在测试更改并等待生产中的某个时间,以确保修复程序正常工作。@Panda当我的mongodb pod重新启动时,我也遇到了同样的问题,我估计是因为内存使用率高。但是我的k8容器没有任何资源限制。我很好奇你说的这个有线电视的尺寸是多少,这个还能用吗you@Kay是的,WiredTigerCache为我工作。我想知道为什么你的容器没有资源限制,这是每个人在容器中都会用到的东西。