1
當我開始我的Rails應用程序並打開它需要查詢我的MongoDB數據庫中的網頁,則存在以下問題:首先MongoDB的查詢超慢上的Linode
- 我的本地機器上需要大約1600ms之間,以執行查詢,並呈現在我的Linode所有
- 大約需要4分鐘執行第一查詢和渲染所有
之後,一切都更快,緩存,頁面加載瞬間,等等
但真的,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
沒有足夠的信息來了解您的性能問題可能是什麼。我建議你從資源(RAM,CPU,I/O)和軟件版本(服務器/導軌/ gem版本)方面比較本地和linode環境之間的差異開始。您還需要分開生成頁面所涉及的軟件時間(例如,數據庫查詢與Rails應用程序或瀏覽器渲染)以確定哪些方面「緩慢」。 – Stennie
我肯定會啓用MongoDB [query profiler](http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/),並確保你有[適當的索引](http:// docs .mongodb.org/manual/indexes /)定義,以改善慢速查詢。你真的需要考慮在應用程序中傳遞頁面時涉及的*整個堆棧,而不僅僅是數據庫。您的本地計算機可能具有更多內存,更快的磁盤和不同的軟件版本等。 – Stennie