rue*_*ger 4 unix memory memory-management mongodb docker
我遇到了一个问题,其中mongodb不遵守所施加的容器内存限制,并且溢出到交换中并减慢了爬网的速度-问题似乎是mongo认为所有主机内存都可用。参见https://github.com/dockerfile/mongodb/issues/34
然后我的问题是-码头工人如何实现内存限制?我实际上对unix这样的限制资源访问的可用选项没有什么全面了解-有人可以快速概述一下吗?
谢谢
这里有几点。
首先,容器中运行的任何进程都将相信它可以访问与主机一样多的内存(docker不会虚拟化内存)
您可以通过设置参数来限制容器被授权使用的内存--memory。您可以通过设置--memory-swap为与完全相同的值来禁用交换--memory:
如果--memory和--memory-swap设置为相同的值,则可以防止容器使用任何交换。这是因为--memory-swap是可以使用的组合内存和交换量,而--memory仅是可以使用的物理内存量。
现在,请记住,即使您设置了--memory和--memory-swap,您的应用程序(mongoDB)也会相信它可以访问主机系统的总内存。在mongoDb 3.2中,它将使用总内存的60%,减去1G。如果要限制此范围,则需要配置storage.wiredTiger.engineConfig.cacheSizeGB
storage.wiredTiger.engineConfig.cacheSizeGB:WiredTiger将用于所有数据的内部缓存的最大大小。
在此处查看mongoDB文档:https ://docs.mongodb.com/v3.2/reference/configuration-options/#storage.wiredTiger.engineConfig.cacheSizeGB
以及Docker文档:https : //docs.docker.com/config/containers/resource_constraints/#memory
| 归档时间: |
|
| 查看次数: |
2847 次 |
| 最近记录: |