mongodb啟用Profiling定位問題

來源:互聯網
上載者:User

標籤:

建議使用方法三,最簡單且容易查看

一:如果mongodb已經運行了很長時間,此時查看mongod.log很大,沒法開啟查看相應資訊

#ps -ef|grep mongod

找到相應的mongod的進程的pid

然後kill -SIGUSR1 pid  這樣mongod就會重建一個記錄檔

> db.setProfilingLevel(2); 
  {"was" : 0 , "ok" : 1} 
  > db.getProfilingLevel()
  上面斜體的層級可以取0,1,2 三個值,他們表示的意義如下:
  0 – 不開啟

  1 – 記錄慢命令 (預設為>100ms)

  2 – 記錄所有命令

開啟profiling後在mongod節點的log日誌中查看

cat mongod.log

或是tail -300 mongod.log

二.

以後你們遇到了這種某個操作慢的問題直接從資料庫裡在小資料下開啟第5級log,看看它訪問了那些表格,直接去看Py中有沒有index
一般說來只要系統不癱瘓,沒有index是慢的直接原因
db.adminCommand({logRotage:1})
kill -SIGUSR1 xxx
db.setLogLevel(1, "query")
db.setLogLevel(1, "command")

為了以後儘快的定位專屬MongoDB的問題,請你們如果發現哪個操作或者並行操作效能慢的話幫忙抓取一下MongoDB log。

分為兩方面:

Profiling: 如果我們定義所有的慢於100ms的資料庫操作多為慢操作的話做如下操作:

                       use MyDomain

                       db.setProfilingLevel(1, 100), 用你測試的Domain 替換MyDomain

                       這樣所有的慢操作都會在 db.system.profile這裡顯示。

                       db.setProfilingLevel(2) 是開啟所有操作profile, 可以實驗用,或者短時開啟。但是一定要及時關閉。

                       show collections 會看到多了一個collection  叫system.profile

                       然後db.system.profile.find().pretty()

 

 

Log: 用db.setLogLevel(1,command)可以看到所有的操作,每個操作的用時都會記錄下來。

        記得定位後用db.setLogLevel(0,command)改回去。

mongodb啟用Profiling定位問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.