Pergunta

When I start my Rails application and open a page which needs to query my MongoDB database, then there is the following problem:

  • on my local machine it takes about 1600ms to perform the queries and render all
  • on my linode it takes about 4min to perform the first query and render all

After that everything is faster, caching, pages are loaded instantly, etc.

But really, 4min? Why is that? Is that the loading from disk to memory for MongoDB? Why does it take so much longer than on my local machine?

Is this due to the hard drive being shared on Linode? I noticed a lot of activity when running 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
Foi útil?

Solução

It's my understanding that Mongo loads all the data from disk into memory, so I guess it's likely that you're experiencing slow performance during that phase. Perhaps it makes sense to hit the db with several queries to warm it up before you enable your application.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top