1. 程式人生 > >MongoDB連線數與連線優化

MongoDB連線數與連線優化

預設每個連線數佔用10M記憶體

ulimit -a 檢視stack size

MongoDB伺服器記憶體要滿足 connection overhead + data size + index size

即連線數開銷+熱點資料+索引

連線數太多的問題:

如果在日誌中遇到類似如下的錯誤資訊:

1"too many open files"
1"too many open connections"

  則說明開啟的連線數太多了,有兩個限制mongod/mongos連線數的地方:

  作業系統的ulimit限制,可以用ulimit檢視open files,是否足夠大。linux下預設的open files是1024,在提供服務的時候往往太小。

   mongodb自身的限制

mongodb(mongod/mongos)在啟動的時候,有個引數是–maxConns,用來指定最大的連線數,預設是20000,也是mongod支援的上限(硬編碼,無法修改)。如果達到2萬,則說明需要優化mongodb的資料/索引,或者需要擴充套件db以支援更大的併發數;如果是在引數限制小於2萬而出現這個錯誤,則只需要調整引數即可。2.5.0去除2萬的限制,see https://jira.mongodb.org/browse/SERVER-8943

連線數優化:

1mongo> db.serverStatus().connections

每個連線都是一個執行緒,需要一個Stack,Linux下預設的Stack設定一般比較大:

1shell> ulimit -a | grep stack stack size              (kbytes, -s) 10240

至於MongoDB實際使用的Stack大小,可以用如下命令確認(單位:K):

1shell> cat /proc/$(pidof mongod)/limits | grep stack | awk -F 'size' '{print int($NF)/1024}'

如果Stack過大(比如:10240K)的話沒有意義,簡單對照命令結果中的Size和Rss:

1shell> cat /proc/$(pidof mongod)/smaps | grep 10240 -A 10

所有連線消耗的記憶體加起來會相當驚人,推薦把Stack設定小一點,比如說1024:

1shell> ulimit -s 1024

注:從MongoDB1.8.3開始,MongoDB會在啟動時自動設定Stack。

原文連結:http://nosqldb.org/topic/50ca8a50ee680fee790001f2

相關推薦

MongoDB連線連線優化

預設每個連線數佔用10M記憶體ulimit -a 檢視stack sizeMongoDB伺服器記憶體要滿足 connection overhead + data size + index size即連線數開銷+熱點資料+索引連線數太多的問題:如果在日誌中遇到類似如下的錯誤資訊

詳解 Tomcat 的連線執行緒池

前言 在使用tomcat時,經常會遇到連線數、執行緒數之類的配置問題,要真正理解這些概念,必須先了解Tomcat的聯結器(Connector)。 在前面的文章 詳解Tomcat配置檔案server.xml 中寫到過:Connector的主要功能,是接收連線請求,建立R

Tomcat 連線執行緒池詳解 | BIO/NIO有何不同 | 簡談Kafka中的NIO網路通訊模型

前言 在使用tomcat時,經常會遇到連線數、執行緒數之類的配置問題,要真正理解這些概念,必須先了解Tomcat的聯結器(Connector)。 在前面的文章 詳解Tomcat配置檔案server.xml 中寫到過:Connector的主要功能,是接收連線請求,建立Req

mongoDB的安裝連線

1.安裝mongoDB 官網下載安裝: https://www.mongodb.com/download-center/community 安裝時選擇自定義設定,安裝到C盤program Files資料夾下即可 2.配置MongoDB 【這個是在網上照抄的,可以用】 a.在c:\MongoD

詳解tomcat的連線執行緒池

前言 在使用tomcat時,經常會遇到連線數、執行緒數之類的配置問題,要真正理解這些概念,必須先了解Tomcat的聯結器(Connector)。 在前面的文章 詳解Tomcat配置檔案server.xml 中寫到過:Connector的主要功能,是接收連線請求,建立Request和Response物件用於和請

本地MongoDB服務開啟連線本地以及遠端伺服器MongoDB服務

前提:本地已經安裝好了MongoDB服務1啟動MongoDB:方法1:若本地配置好了MongoDB為windows服務,在服務裡啟動MongoDB方法2:開啟一個cmd,執行mongod --dbpat

關於併發連線線上的關係

在實際的效能測試中,經常接觸到的與併發使用者數相關的概念還包括“併發使用者數”、“系統使用者數”和“同時線上使用者數”,下面用一個實際的例子來說明它們之間的差別。 假設有一個OA系統,該系統有2000個使用使用者——這就是說,可能使用該OA系統的使用者總數是2000名,這個

SqlServer資料庫連線客戶端連線池關係測試(一)

  連線池連線數             DB連線數      峰值錯誤資訊     連線峰值   40000 0(32767)    ? ? 3000 0(32767) ? ? 40000 3000 ? ?

mongoDb固定集合效能優化

固定集合: 屬性1.對固定集合進行插入速度極快 屬性2:按照插入順序的查詢輸出速度極快 屬性3:能夠在插入最新資料時,淘汰最早的資料 用法1:儲存日誌資訊 用法2:快取一些少量的文件 建立固定集合 不像普通集合,固定集合需要顯式的建立使用createCollection

MongoDB的索引查詢優化

MongoDB的索引的機制與普通資料庫基本相似,主要有如下幾部分: 單欄位索引 MongoDB預設為所有集合建立了一個_id欄位的單欄位索引,該索引唯一,且不能刪除(_id為集合的主鍵) 索引的建立方法: db.customers.ensureInd

撩課-JavaWeb之什麼是連線連線池使用

什麼是連線池 沒有連線池的情況 每次CRUD操作都要使用資料庫的時候,都要建立一個數據庫連線物件 普通的JDBC資料庫連線使用 DriverManager 來獲取 每次向資料庫建立連線的時候都要將 Connection 載入到記憶體中 然後再驗證使用者名稱和密碼花費時間0.0

提高TCP併發連線連線速度的方法

1)在記憶體或快取記憶體cache中構建查詢表,所述查詢表儲存根據已有TCP連線的源IP地址、目的IP地址、源埠地址、目的埠地址計算得到的簽名值,並實現TCB與查詢表中的相應簽名值形成關聯; 2)當進行TCP連線的建立、刪除時,先根據TCP連線的源IP地址、目的IP地址、

資料庫伺服器最大連線連線池最大活動可否相等?

關於網友提出的“資料庫伺服器最大連線數和連線池最大活動數可否相等?”問題疑問,本網通過在網上對“資料庫伺服器最大連線數和連線池最

關於MongoDB最大連線的檢視修改

[[email protected] mongodb-linux-x86_64-2.4.1]# ./bin/mongod --dbpath=/root/db --maxConns=2000Wed Apr 3 11:06:21.905 [initandlisten] MongoDB starting

postgres 連線檢視設定

PG中有一張表記錄著當前有多少連線 表名:pg_stat_activity 查詢當前連線數: select count(1) from pg_stat_activity; 查詢最大連線數 show max_connections; 最大連線數也可以在pg配置檔案

ORACLE資料生成awr報告檢視資料庫連線

一,生成awr報告 查詢awrrpt.sql檔案位置 1 find / -name awrrpt.sql 2,進入oracle目錄 3登入oracle sqlplus / as sysdba 4, SQL>@/home/oracle/app/oracle/produc

nginx連線優化

1、我們伺服器用比較傳統的 worker_processes auto;都是設定成自動 避免寫死了 有的時候升配置又忘了改動。worker_connections 用10240   2、你伺服器如果比較固定,配置不會變的話 ,你可以根據ulimit -n 大概計算下大於worker_proces

tomcat高併發下優化詳解及連線和執行緒池

高併發環境下,我知道優化配置tomcat,對連線數和執行緒池作修改,最重要的是connector的協議Http Connector使用NIO,而不是預設的AJP Connector,當時也沒有仔細研究其原理。現在來為以上這些設定做一下剖析。 要了解這些,不能避開tomcat

thinkphp開發總結(二)——同時連線mysqlmongodb資料庫

一、連線mongodb資料庫 連線mongodb我採用的是tp裡的config配置,在Common/Conf/config.php: <?php return array( //資料庫配置資

修改MONGODB 最大連線

問題: 今天PHP 測試端出錯。不知是否為MONGODB的問題。測試最時而正常,重新整理多次後就出錯。 想到是否為連線次數的原因呢,所以想到把最大連線數修改後,再讓他們測試一下,是否問題依舊。 修改方法: ---------------------------------