MongoDB:与旧服务器相比,新服务器上的查询运行速度慢了两倍

问题描述

我将当前/旧的正在运行的数据库转移到用于MongoDB的新独立服务器中。为此,我执行了以下操作:

  1. 从旧服务器上转储数据
  2. 生成的转储中的数据还原到NEW服务器中
  3. 配置服务器进行身份验证

问题
我注意到,执行上述操作后,新服务器上几乎没有查询运行速度是旧服务器上的两倍。

配置
两台服务器的配置相同,但是新服务器具有32 GB RAM,而旧服务器具有28GB RAM。 OLD服务器也运行着其他应用程序和服务器。虽然NEW服务器是仅用于该数据库的专用服务器。

cpu消耗相似,但是RAM在旧服务器中占用大量内存,而在新服务器中则较少占用内存。

因此,NEW服务器的硬件和RAM消耗更好。另外,NEW服务器是仅专用于此数据库的独立服务器。

问题
为什么即使是独立服务器,我的新服务器也比旧服务器慢?我该如何纠正?

解决方法

MongoDB将最近使用的数据保留在RAM中。如果您为查询创建了索引,并且您的工作数据集适合RAM,那么MongoDB将从内存中提供所有查询。

因此,您的 OLD DB 已将数据缓存在内存中,并且每当执行查询时,结果都可能来自内存。

默认情况下,有线Tiger还消耗50%的内存用于内部缓存。 因此,您的 OLD DB 占用大量内存并具有更好的性能。

由于您刚刚将转储恢复到了 NEW DB 上,因此它没有任何最新数据缓存到内存中。

因此,每当执行查询时,它都会碰到磁盘并执行I / O操作,这会影响查询性能。

如果您多次触发一组查询,则MongoDB将在适合内存的情况下缓存结果,这将为您在 NEW DB

上的查询提供更好的性能。

以下一些文档可以帮助您获取更多信息 https://docs.mongodb.com/manual/core/wiredtiger/#wiredtiger-ram https://docs.mongodb.com/manual/faq/fundamentals/#does-mongodb-handle-caching