項目遇到mongo數據恢復的問題,首先我從原項目中將數據導出,然後恢復到指定的服務器,以爲就好了。
但是遇到一個 問題,就是rabbitmq的消息隊列出現了消息堆積,剛開始我以爲是rabbitmq服務的問題,但是消息隊列偶爾又會出現一兩次被消費的情況。
這時我查看系統的cup的使用率,發現mongo這個進程的使用率很高,內存使用率也很高,這時,我使用命令db.currentOp()查看Mongo在執行的任務,發現它總是從一張表中進行了全局掃描,使用命令db.<集合名稱>.storageSize()查看這張表的大小,發現居然有30多個G的數據量。然後百度了一下,具體的原因如下:
mongo佔有cpu和內存資源很高,導致磁盤的讀寫率降低,從而導致消息隊列堆積的問題,此時,我對這張表建立了索引操作,完成以後,cpu和內存明顯降低,消息隊列也不再出現消息堆積的問題。