mongodb docker vm.max_map_count 即使设置为 524288 也太低了

问题描述 投票:0回答:1
vm.max_map_count 在主机系统中永久设置为 524288。 如果我运行 'docker exec mongodb sysctl vm.max_map_count' (mongodb 是容器名称),结果是 vm.max_map_count = 524288。所以我假设该设置已正确复制到容器内。

尝试了不同的值、不同的主机(都是 ubuntu 22.04),在 docker 容器中运行的每个 mongodb 上始终相同。重新启动或重新创建没有帮助。 如果我直接在主机上运行 mongod,则不会显示警告。

有什么想法吗?

每个网络连接需要2个映射的虚拟内存区域。
mongodb docker
1个回答
0
投票
当 mongod 启动时,它会检查 /proc/sys/vm/max_map_count 中的值,以确保它至少是允许的最大入站连接数的两倍。

该警告是在此处生成的:

https://github.com/mongodb/mongo/blob/master/src/mongo/transport/transport_layer_manager_impl.cpp#L223-L246

具体:

requiredMapCount = 2 * maxConns

因此,没有绝对值触发警告,它只是向您指出,如果您的服务器实际上尝试接受
net.maxIncomingConnections
允许的所有连接,它将没有足够的映射,这将触发为posix 错误,可能是断言失败,并可能导致 mongod 崩溃。

如果您认为 524288 个地图就足够了,请将允许的传入连接数减少到 262144 或更少。

© www.soinside.com 2019 - 2024. All rights reserved.