mongodb - 如何配置 Mongodb 的缓存大小?

标签 mongodb mmap

我需要在 Mongodb 中处理缓存。这样做需要大量 RAM 吗? 在这种情况下使用存储引擎有什么特点和优势?

最佳答案

  1. 方法(无法在重启后继续存在):

    ./bin/mongo 管理

    db.adminCommand( { "setParameter": 1, "wiredTigerEngineRuntimeConfig": "cache_size=10G"})

  2. 启动 mongodb 服务

    ./bin/mongod --config server.conf --wiredTigerCacheSizeGB=10

--- server.conf(每行一个键/值)---

maxConns=200
logpath=logs/server.log
logappend=true
fork=true
dbpath=data
nohttpinterface=true
syncdelay=60
quiet = true
slowms = 2000
notablescan = false

使用此命令检查大小:

> db.serverStatus().wiredTiger.cache
{
        "bytes currently in the cache" : 4606522365,
        "bytes read into cache" : 3291056,
        "bytes written from cache" : 5631783282,
        "checkpoint blocked page eviction" : 0,
        "eviction currently operating in aggressive mode" : 0,
        "eviction server candidate queue empty when topping up" : 448,
        "eviction server candidate queue not empty when topping up" : 0,
        "eviction server evicting pages" : 0,
        "eviction server populating queue, but not evicting pages" : 447,
        "eviction server unable to reach eviction goal" : 0,
        "eviction worker thread evicting pages" : 12,
        "failed eviction of pages that exceeded the in-memory maximum" : 0,
        "files with active eviction walks" : 0,
        "files with new eviction walks started" : 105,
        "hazard pointer blocked page eviction" : 0,
        "in-memory page passed criteria to be split" : 896,
        "in-memory page splits" : 448,
        "internal pages evicted" : 0,
        "internal pages split during eviction" : 0,
        "leaf pages split during eviction" : 13,
        "lookaside table insert calls" : 0,
        "lookaside table remove calls" : 0,
        "maximum bytes configured" : 10737418240,  <---- this is the configured size
        "maximum page size at eviction" : 8388576,
        "modified pages evicted" : 13,
        "modified pages evicted by application threads" : 0,
        "page split during eviction deepened the tree" : 0,
        "page written requiring lookaside records" : 0,
        "pages currently held in the cache" : 675,
        "pages evicted because they exceeded the in-memory maximum" : 1,
        "pages evicted because they had chains of deleted items" : 448,
        "pages evicted by application threads" : 0,
        "pages queued for eviction" : 12,
        "pages queued for urgent eviction" : 0,
        "pages read into cache" : 234,
        "pages read into cache requiring lookaside entries" : 0,
        "pages seen by eviction walk" : 25702,
        "pages selected for eviction unable to be evicted" : 0,
        "pages walked for eviction" : 127975,
        "pages written from cache" : 310352,
        "pages written requiring in-memory restoration" : 0,
        "percentage overhead" : 8,
        "tracked bytes belonging to internal pages in the cache" : 316858,
        "tracked bytes belonging to leaf pages in the cache" : 4606205507,
        "tracked bytes belonging to overflow pages in the cache" : 0,
        "tracked dirty bytes in the cache" : 809239633,
        "tracked dirty pages in the cache" : 190,
        "unmodified pages evicted" : 0
}

关于mongodb - 如何配置 Mongodb 的缓存大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32889947/

相关文章:

python - 从 mmap 迭代并用 C 中的 block 读取的输入文件的 2 个不同输出

c++ - 当 boost 内存映射文件分配的磁盘空间多于 HDD 上的可用空间时,如何检测错误

mysql - 数据聚合 mongodb vs mysql

mongodb - MongoEngine 指定查询的读取首选项

java - Java 查询集合中最新的条目

c - mmap vs O_DIRECT 用于随机读取(涉及哪些缓冲区?)

linux-kernel - mmap 只需要内核缓冲区的页面到用户空间

python - 使用 mmap 增加文件大小

node.js - 如何在nodeJS和mongoDB中进行聚合

java - 如何使用 Spring RabbitMQ 和 MongoDB 捕获连接异常?