亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

讓我們一起,一探究竟,繼續(xù)學(xué)習(xí)MongoDB數(shù)據(jù)庫性能監(jiān)控,實(shí)現(xiàn)快速入門,豐富個(gè)人簡歷,提高面試level,給自己增加一點(diǎn)談資,秒變面試小達(dá)人,BAT不是夢。

 

 

最近項(xiàng)目在使用MongoDB作為圖片和文檔的存儲數(shù)據(jù)庫,為啥不直接存MySQL里,還要搭個(gè)MongoDB集群,麻不麻煩?

 

讓我們一起,一探究竟,繼續(xù)學(xué)習(xí)MongoDB數(shù)據(jù)庫性能監(jiān)控,實(shí)現(xiàn)快速入門,豐富個(gè)人簡歷,提高面試level,給自己增加一點(diǎn)談資,秒變面試小達(dá)人,BAT不是夢。

一、MongoDB啟動慢?

1、啟動日常卡住

根本不用為了截屏而快速操作,MongoDB啟動真的超級慢。

 

圖片

 

 

圖片

 

2、啟動MongoDB配置服務(wù)器,間歇性失敗

 

圖片

 

 

圖片

 

3、查看MongoDB日志,分析“MongoDB啟動慢”的原因

 

圖片

 

4、耗時(shí)“一小時(shí)”,MongoDB啟動成功!

 

圖片

 

二、原因分析

在MongoDB關(guān)閉之前,有較大的索引建立的操作沒有完成,MongoDB就直接shutdown了,等MongoDB再次啟動的時(shí)候,MongoDB默認(rèn)會將這個(gè)index重建好,重建期間處于startup狀態(tài)。

由于不清楚重建索引需要多久,因此可以通過重啟mongod時(shí)加上–noIndexBuildRetry參數(shù)來跳過索引重建。等啟動完成后,再創(chuàng)建這個(gè)索引。

下面從幾方面,監(jiān)控一下MongoDB的性能問題。

三、MongoDB內(nèi)存使用

 

圖片

 

  • 常駐內(nèi)存:常駐內(nèi)存是MongoDB在RAM中顯式擁有的內(nèi)存。如果查詢一個(gè)集合數(shù)據(jù),MongoDB會將其放入常駐內(nèi)存中,MongoDB會獲得其地址,這個(gè)地址不是RAM中數(shù)據(jù)的真實(shí)地址,而是一個(gè)虛擬地址。MongoDB可以將它傳遞給內(nèi)核,內(nèi)核會查找出數(shù)據(jù)的真實(shí)位置。如果內(nèi)核需要從內(nèi)存中清理緩存,MongoDB仍然可以通過該地址對其進(jìn)行訪問。MongoDB會向內(nèi)核請求內(nèi)存,然后內(nèi)核會查看數(shù)據(jù)緩存,如果發(fā)現(xiàn)數(shù)據(jù)不存在,就會產(chǎn)生缺頁錯(cuò)誤并將數(shù)據(jù)復(fù)制到內(nèi)存中,最后再返給MongoDB。
  • 虛擬內(nèi)存:操作系統(tǒng)提供的一種抽象,它對軟件進(jìn)程隱藏了物理存儲的細(xì)節(jié)。每個(gè)進(jìn)程都可以看到一個(gè)連續(xù)的內(nèi)存地址空間。在Ops Manager中,MongoDB的虛擬內(nèi)存是映射內(nèi)存的兩倍。
  • 映射內(nèi)存:包含MongoDB曾經(jīng)訪問過的所有數(shù)據(jù)。

四、MongoDB磁盤空間?

當(dāng)磁盤空間不足時(shí),可以進(jìn)行如下操作:

  1. 可以添加一個(gè)分片;
  2. 刪除未使用的索引;
  3. 可以執(zhí)行壓縮操作;
  4. 關(guān)閉副本集成員,將其數(shù)據(jù)復(fù)制到更大的磁盤中掛載;
  5. 用較大驅(qū)動器的成員替換副本集中的成員;

五、常用命令

1、MongoDB獲取系統(tǒng)信息

 

db.hostInfo()
  • 1.

 

 

圖片

 

2、MongoDB獲取系統(tǒng)內(nèi)存情況

 

db.serverStatus().mem
  • 1.

 

 

圖片

 

3、MongoDB獲取連接數(shù)信息

 

db.serverStatus().connections
  • 1.

 

 

圖片

 

4、MongoDB獲取全局鎖信息

 

db.serverStatus().globalLock
  • 1.

 

 

圖片

 

5、MongoDB獲取操作統(tǒng)計(jì)計(jì)數(shù)器

 

db.serverStatus().opcounters
  • 1.

 

 

圖片

 

6、MongoDB獲取數(shù)據(jù)庫狀態(tài)信息

 

db.stats()
  • 1.

 

 

圖片

 

以上是MongoDB的重要指標(biāo),通過這些指標(biāo)我們可以了解到MongoDB的運(yùn)行狀態(tài),評估數(shù)據(jù)庫的健康程度,并快速確定實(shí)際項(xiàng)目中遇到的性能瓶頸。

比如項(xiàng)目中遇到的Timeout異常:

 

com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message
  at com.mongodb.connection.InternalStreamConnection.translateReadException(InternalStreamConnection.JAVA:475)
  at com.mongodb.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:226)
  at com.mongodb.connection.UsageTrackingInternalConnection.receiveMessage(UsageTrackingInternalConnection.java:105)
  at com.mongodb.connection.DefaultConnectionPool$PooledConnection.receiveMessage(DefaultConnectionPool.java:438)
  at com.mongodb.connection.CommandProtocol.execute(CommandProtocol.java:112)
  at com.mongodb.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:168)
  at com.mongodb.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:289)
  at com.mongodb.connection.DefaultServerConnection.command(DefaultServerConnection.java:176)
  at com.mongodb.operation.CommandOperationHelper.executeWrAppedCommandProtocol(CommandOperationHelper.java:216)
  at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:207)
  at com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:113)
  at com.mongodb.operation.FindOperation$1.call(FindOperation.java:488)
  at com.mongodb.operation.FindOperation$1.call(FindOperation.java:1)
  at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:241)
  at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:214)
  at com.mongodb.operation.FindOperation.execute(FindOperation.java:483)
  at com.mongodb.operation.FindOperation.execute(FindOperation.java:1)
  at com.mongodb.Mongo.execute(Mongo.java:818)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

 

六、MongoDB持久性?

1、復(fù)制延遲

復(fù)制延遲是指從節(jié)點(diǎn)無法跟上主節(jié)點(diǎn)的速度。

從節(jié)點(diǎn)一個(gè)操作的時(shí)間減去主節(jié)點(diǎn)此操作的時(shí)間,就是復(fù)制延遲。延遲應(yīng)該盡可能的接近0,并且通常是毫秒級的。

2、備份

備份操作通常會將所有數(shù)據(jù)讀入內(nèi)存,因此,備份操作通常應(yīng)該在副本集從節(jié)點(diǎn)而不是主節(jié)點(diǎn)進(jìn)行,如果是單機(jī)MongoDB,則應(yīng)該在空間時(shí)間進(jìn)行備份,比如深夜凌晨。

3、持久性

持久性是數(shù)據(jù)庫必備的一種特性,想象一下,如果數(shù)據(jù)庫不具備持久性,如果數(shù)據(jù)庫重啟,數(shù)據(jù)全部丟失,太可怕了,不敢想。

為了在服務(wù)器發(fā)生故障時(shí)提供持久性,MongoDB使用預(yù)寫式日志機(jī)制,英文簡稱 WAL。WAL是數(shù)據(jù)庫系統(tǒng)中一種常見的持久性技術(shù)。在數(shù)據(jù)存入數(shù)據(jù)庫之前,將這些更改操作寫到磁盤上。

從MongoDB4.0開始,執(zhí)行寫操作時(shí),MongoDB會使用與oplog相同的格式創(chuàng)建日志。oplog語句具有冪等性,不管執(zhí)行多少次,結(jié)果都是一樣的。

MongoDB還維護(hù)了日志和數(shù)據(jù)庫數(shù)據(jù)文件的內(nèi)存視圖。默認(rèn)情況,每50毫秒會將日志條目刷新到磁盤上,每60秒會將數(shù)據(jù)庫文件刷新到磁盤上。刷新數(shù)據(jù)的時(shí)間60秒間隔被稱為檢查點(diǎn)。日志用于將上一個(gè)檢查點(diǎn)之后的數(shù)據(jù)提供持久性。MongoDB的持久性就是在發(fā)生故障時(shí),重啟之后,將日志中的語句重新執(zhí)行一遍,以保證在關(guān)閉前丟失的數(shù)據(jù)重新刷新到MongoDB中。

MongoDB會在data目錄下創(chuàng)建一個(gè)journal的子目錄,WiredTiger日志文件的名稱為WiredTigerLog.<sequence>。sequence是一個(gè)從0 000 000 001開始的數(shù)字。

 

圖片

 

MongoDB會對寫入的日志進(jìn)行壓縮,日志文件限制的最大大小為100MB。如果大于100MB,MongoDB就會自動創(chuàng)建一個(gè)新的日志文件,由于日志文件只需在上次檢查點(diǎn)之后恢復(fù)數(shù)據(jù),因此在新的檢查點(diǎn)寫入完成時(shí),舊的日志文件就會被刪除。

本文轉(zhuǎn)載自微信公眾號「哪吒編程」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系哪吒編程公眾號。

分享到:
標(biāo)簽:MongoDB
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定