mongodb - 在同一台主机的两个不同容器上运行 MongoDB 和 Redis

标签 mongodb redis virtual-machine docker linux-containers

我在某处读到 MongoDB 和 Redis 服务器不应在同一主机上执行,因为 Redis 管理内存的方式会损坏 MongoDb。这是在 Docker.io 之前。但是现在事情似乎大不一样了?在同一台主机上的两个不同容器上运行 Redis 服务器和 MongoDB 方便吗?

最佳答案

Docker 不会更改您的硬件,它也是处理未虚拟化资源的操作系统,因此此处应适用与普通硬件相同的规则。

内存

MongoDB 和 Redis 不共享任何内存。使用同一主机的问题是您可能会用完这两个进程的 RAM,您可以为 Redis 设置最大大小,您可能可以为 MongoDB 做同样的事情,这是强制性的。

如果您的大小合适(MongoDB RAM + Redis RAM < 硬件 RAM),您将不会在磁盘上为 Redis 进行任何交换(这绝对是您想要防止的),但 mongodb 缓存可能不会那么好(没有足够的地方进行优化)。如果您的数据增长,减少 Redis 的内存总是一个挑战:如果数据大小不可预测,请注意内存不足!

如果您使用 redis 进行备份,它会使用比其数据集更多的 RAM 来生成转储,因此请注意这一点。这意味着还使用 IO。

输入输出

在这种情况下(更少的 RAM)mongo 将做更多的 IO 来访问数据。 Redis,取决于你的备份策略,可以使用或不使用 IO(你的选择)。最坏的情况:如果你在 redis 上使用 AOF,它会产生很多 IO,所以 IO 可能会成为这个架构的瓶颈。如果你不使用 redis 的备份:你不会有问题。 SSD 也是 Mongo 的不错选择。

中央处理器

我不知道 MongoDB 是否使用大量 CPU,但除了备份期间,redis 大部分时间不会。如果您使用 redis 进行备份:尝试为其提供两个 CPU 内核(一个用于 redis,一个用于备份任务)。

网络

这取决于您的客户数量。但是你应该检查你机器的吞吐量/输入负载,看看你是否没有饱和(例如使用 monit 和警报)。有时是瓶颈,一台机器的吞吐量不够!

关于mongodb - 在同一台主机的两个不同容器上运行 MongoDB 和 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28287021/

相关文章:

ubuntu - 将加密狗许可证从 Ubuntu 共享到 VirtualBox Windows 7

javascript - 如何在mongodb中replaceRoot后进一步分组对象

redis - 将 Redis 与 Wildfly java 应用程序服务器一起使用

javascript - 如何在javascript中获取redis中的所有键和值?

javascript - 与Redis缓存的连接失败

azure - 模拟显卡Windows Azure VM,可以吗?

azure - 无需停机即可更改 Azure VM IP 地址

mongodb - 如何在 MongoDB 中使用文档和集合之间的关系

database - Mongodb 不为对象数组使用索引

mongodb - 如何重命名 MongoDB 中的文档字段?