第一个MongoDB查询在Linode上超慢

时间:2014-01-31 03:32:52

标签: ruby-on-rails mongodb memory io linode

当我启动Rails应用程序并打开需要查询MongoDB数据库的页面时,会出现以下问题:

  • 在我的本地计算机上执行查询并渲染所有
  • 大约需要1600毫秒
  • 在我的linode上需要 4min 来执行第一个查询并渲染所有

之后一切都变得更快,缓存,页面立即加载等等。

但是真的,4分钟?这是为什么?那是MongoDB从磁盘加载到内存的吗?为什么它比我本地的机器需要更长的时间?

这是由于在Linode上共享硬盘吗?我在运行iostat

时发现了很多活动
$ iostat -d 2   

Linux 3.12.6-x86_64-linode36 (linode)   01/31/2014  _x86_64_    (8 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvda           1129.69     43026.47        17.62 1940251345     794504
xvdb            248.43      2572.50       698.08  116005452   31479356

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvda           4491.50    179012.00         0.00     358024          0
xvdb              0.00         0.00         0.00          0          0

1 个答案:

答案 0 :(得分:0)

我的理解是Mongo将所有数据从磁盘加载到内存中,所以我猜你在这个阶段可能会遇到性能下降的问题。也许在启用应用程序之前使用多个查询对数据库进行预热是有意义的。