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