以下是用JavaScript腳本寫的循環kill操作,它可以強制kill MongoDB資料庫慢查詢。
很多時候,有些慢查詢導緻MongoDB壓力很大, 花了點時間寫了個腳本循環kill些慢查詢操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<code>var</code> <code>j = 0; </code>
<code>var</code> <code>_DEF_TIME = 10; </code><code>//設定慢查詢時間 </code>
<code>for</code> <code>(</code><code>var</code> <code>i </code><code>in</code> <code>db.currentOP().inprog) { </code>
<code> </code><code>var</code> <code>op = </code><code>""</code><code>; </code>
<code> </code><code>var</code> <code>opid; </code>
<code> </code><code>var</code> <code>memProg = {} </code>
<code> </code><code>if</code> <code>(</code><code>typeof</code><code>(undefined) == </code><code>typeof</code><code>(db.currentOP().inprog[i])) { </code>
<code> </code><code>continue</code><code>; </code>
<code> </code><code>} </code>
<code> </code><code>memProg = db.currentOP().inprog[i]; </code>
<code> </code><code>op = memProg.op; </code>
<code> </code><code>opid = memProg.opid; </code>
<code> </code><code>print(i); </code>
<code> </code><code>if</code> <code>(op == </code><code>"query"</code><code>) { </code>
<code> </code><code>if</code> <code>(memProg.hasOwnProperty(‘secs_running’)) { </code>
<code> </code><code>var</code> <code>useTime = memProg.secs_running; </code>
<code> </code><code>if</code> <code>(useTime >= _DEF_TIME) { </code>
<code> </code><code>db.killOp(opid); </code>
<code> </code><code>j++; </code>
<code> </code><code>print(</code><code>"killed "</code> <code>+ j + </code><code>" Query Operation!"</code><code>); </code>
<code> </code><code>} </code>
<code> </code><code>} </code>
<code>}</code>
運作方式:
<code>.</code><code>/mongo</code> <code>localhost:30000 < .</code><code>/Self-Script/killSlow</code><code>.js</code>
<code></code>
本文轉自UltraSQL51CTO部落格,原文連結:http://blog.51cto.com/ultrasql/1706487 ,如需轉載請自行聯系原作者