今天研究到了關于mongodb的最大連接配接數的問題,百度了許久後總結如下:
mongodb啟動時候的根系統的允許的最大打開檔案數有關系,筆者最開始的時候limt的大小為1024,是以啟動的時候預設的最大連接配接數位819,當啟動的時候加上--maxConns=3000最大連接配接數依舊是819.
無奈下找了資料發現最大連接配接數是有系統允許打開的最大連接配接數*0.8所決定的,1024*0.8=819 是以加了參數也是無效
後來更改了系統允許的最大檔案數位65535後,發現啟動mongodb後即使不加--maxConns=3000這個參數,mongodb的最大連接配接已經變成了65535*0.8=52428了。
綜上所述:
mongodb的最大最大連接配接數=ulimit*0.8所決定(預設情況下)
假如啟動的時候使用maxConns這個參數,會有如下兩種情況:
第一:假如ulimit*0.8 > maxConns所設定的參數,那麼maxConns設定的參數生效
第二:假如ulimit*0.8 < maxConns所設定的參數,那麼maxConns設定的參數不生效,最大連接配接數為ulimit*0.8
關于檢視mongodb最大連接配接數的幾個指令如下:
一、mongodb自帶mongostat指令可以擦看一下參數,如下:
<a href="http://s2.51cto.com/wyfs02/M01/78/CF/wKioL1aDnhfgjZKUAAFcGdHwg_c727.png" target="_blank"></a>
它的輸出有以下幾列:
inserts/s 每秒插入次數
query/s 每秒查詢次數
update/s 每秒更新次數
delete/s 每秒删除次數
getmore/s 每秒執行getmore次數
command/s 每秒的指令數,比以上插入、查找、更新、删除的綜合還多,還統計了别的指令
flushs/s 每秒執行fsync将資料寫入硬碟的次數。
mapped/s 所有的被mmap的資料量,機關是MB,
vsize 虛拟記憶體使用量,機關MB
res 實體記憶體使用量,機關MB
faults/s 每秒通路失敗數(隻有Linux有),資料被交換出實體記憶體,放到swap。不要超過100,否則就 是機器記憶體太小,造成頻繁swap寫入。此時要更新記憶體或者擴充
locked % 被鎖的時間百分比,盡量控制在50%以下吧
idx miss % 索引不命中所占百分比。如果太高的話就要考慮索引是不是少了
q t|r|w 當Mongodb接收到太多的指令而資料庫被鎖住無法執行完成,它會将指令加入隊列。這一欄 顯示了總共、讀、寫3個隊列的長度,都為0的話表示mongo毫無壓力。高并發時,一般隊列值會升高。
conn 目前連接配接數
time 時間戳
二、mongodb可以登入進去使用相應指令檢視
<a href="http://s4.51cto.com/wyfs02/M01/78/D1/wKiom1aDnxXC-XJ1AAC_djV6zPQ053.png" target="_blank"></a>
介紹下關于三個參數的詳情:
"current" : 32 表示目前有32個活動連接配接
"available" : 52396 表示目前空閑52396個連接配接
"totalCreated" : NumberLong(33) 表示從mongodb到目前為止總共有過33個連接配接
本文轉自 xinsir999 51CTO部落格,原文連結:http://blog.51cto.com/xinsir/1730065,如需轉載請自行聯系原作者