成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MongoDB數據庫性能監控看這一篇就夠了

數據庫 MongoDB
讓我們一起,一探究竟,繼續學習MongoDB數據庫性能監控,實現快速入門,豐富個人簡歷,提高面試level,給自己增加一點談資,秒變面試小達人,BAT不是夢。

最近項目在使用MongoDB作為圖片和文檔的存儲數據庫,為啥不直接存MySQL里,還要搭個MongoDB集群,麻不麻煩?


讓我們一起,一探究竟,繼續學習MongoDB數據庫性能監控,實現快速入門,豐富個人簡歷,提高面試level,給自己增加一點談資,秒變面試小達人,BAT不是夢。

一、MongoDB啟動慢?

1、啟動日??ㄗ?/h4>

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

圖片

圖片

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

圖片

圖片

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

圖片

4、耗時“一小時”,MongoDB啟動成功!

圖片

二、原因分析

在MongoDB關閉之前,有較大的索引建立的操作沒有完成,MongoDB就直接shutdown了,等MongoDB再次啟動的時候,MongoDB默認會將這個index重建好,重建期間處于startup狀態。

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

下面從幾方面,監控一下MongoDB的性能問題。

三、MongoDB內存使用

圖片

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

四、MongoDB磁盤空間?

當磁盤空間不足時,可以進行如下操作:

  1. 可以添加一個分片;
  2. 刪除未使用的索引;
  3. 可以執行壓縮操作;
  4. 關閉副本集成員,將其數據復制到更大的磁盤中掛載;
  5. 用較大驅動器的成員替換副本集中的成員;

五、常用命令

1、MongoDB獲取系統信息

db.hostInfo()

圖片

2、MongoDB獲取系統內存情況

db.serverStatus().mem

圖片

3、MongoDB獲取連接數信息

db.serverStatus().connections

圖片

4、MongoDB獲取全局鎖信息

db.serverStatus().globalLock

圖片

5、MongoDB獲取操作統計計數器

db.serverStatus().opcounters

圖片

6、MongoDB獲取數據庫狀態信息

db.stats()

圖片

以上是MongoDB的重要指標,通過這些指標我們可以了解到MongoDB的運行狀態,評估數據庫的健康程度,并快速確定實際項目中遇到的性能瓶頸。

比如項目中遇到的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)

六、MongoDB持久性?

1、復制延遲

復制延遲是指從節點無法跟上主節點的速度。

從節點一個操作的時間減去主節點此操作的時間,就是復制延遲。延遲應該盡可能的接近0,并且通常是毫秒級的。

2、備份

備份操作通常會將所有數據讀入內存,因此,備份操作通常應該在副本集從節點而不是主節點進行,如果是單機MongoDB,則應該在空間時間進行備份,比如深夜凌晨。

3、持久性

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

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

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

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

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

圖片

MongoDB會對寫入的日志進行壓縮,日志文件限制的最大大小為100MB。如果大于100MB,MongoDB就會自動創建一個新的日志文件,由于日志文件只需在上次檢查點之后恢復數據,因此在新的檢查點寫入完成時,舊的日志文件就會被刪除。

本文轉載自微信公眾號「哪吒編程」,可以通過以下二維碼關注。轉載本文請聯系哪吒編程公眾號。


責任編輯:姜華 來源: 哪吒編程
相關推薦

2022-05-19 08:28:19

索引數據庫

2018-05-22 08:24:50

PythonPyMongoMongoDB

2020-02-18 16:20:03

Redis ANSI C語言日志型

2022-06-20 09:01:23

Git插件項目

2023-02-10 09:04:27

2022-08-01 11:33:09

用戶分析標簽策略

2021-04-08 07:37:39

隊列數據結構算法

2023-09-11 08:13:03

分布式跟蹤工具

2022-05-26 06:05:16

MySQL數據庫

2020-07-03 08:21:57

Java集合框架

2024-09-23 08:00:00

消息隊列MQ分布式系統

2019-05-14 09:31:16

架構整潔軟件編程范式

2023-10-17 08:15:28

API前后端分離

2017-03-11 22:19:09

深度學習

2022-04-07 10:39:21

反射Java安全

2023-11-18 09:30:42

模型AI

2019-04-01 10:43:59

Linux問題故障

2020-10-18 07:32:06

SD-WAN網絡傳統廣域網

2023-11-06 07:21:13

內存結構Jvm

2022-07-06 12:07:06

Python函數式編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操天天射综合 | 国产区一区二区三区 | 激情五月婷婷丁香 | 日韩成人免费av | 成人激情视频在线 | 精品国产免费人成在线观看 | 亚洲第一黄色网 | 美女在线国产 | 狠狠ri| 亚洲人a | caoporn视频在线 | 久久99精品国产 | 懂色中文一区二区在线播放 | 国产成人免费视频 | 久久亚洲精品视频 | 91国内外精品自在线播放 | 91视频免费黄| 免费国产精品久久久久久 | 免费午夜电影 | 国产成人精品免费 | 国产成人99久久亚洲综合精品 | 91一区二区 | 日韩一区二区久久 | 九九色综合 | 亚洲一区二区中文字幕 | 国产精品成人一区二区三区夜夜夜 | 涩爱av一区二区三区 | av网站在线看 | 午夜天堂精品久久久久 | 国产福利资源在线 | 一区二区三区四区免费视频 | 99re视频在线 | 草草视频在线观看 | 日韩欧美国产综合 | 午夜视频在线播放 | 亚洲国产精品一区二区三区 | 国产日韩欧美精品一区二区三区 | 草草视频在线观看 | 久久综合色综合 | 国产精品国产a级 | 久久久久精 |