zoukankan      html  css  js  c++  java
  • rocksdbCacheSizeGB过大导致mongodb被kill

    现象

    通过监控发现mongodb重启了两次,结合内存监控来看,很有可能是被kill了,时间点也对的上。

    查找日志

    cd /var/log
    fgrep -i 'killed process' /var/log/messages 或者 journalctl -xb | fgrep -i 'killed process'
    
    Sep 17 22:48:15 h27 kernel: Killed process 56106 (mongod) total-vm:40778532kB, anon-rss:38430872kB, file-rss:0kB, shmem-rss:0kB
    Sep 17 22:48:15 h27 kernel: Killed process 56132 (ftdc) total-vm:40778532kB, anon-rss:38433100kB, file-rss:0kB, shmem-rss:0kB
    Sep 17 22:48:15 h27 kernel: Killed process 2249 (Replica.xecutor) total-vm:40778532kB, anon-rss:38433100kB, file-rss:0kB, shmem-rss:0kB
    Sep 18 07:18:15 h27 kernel: Killed process 16984 (mongod) total-vm:33426556kB, anon-rss:30856324kB, file-rss:0kB, shmem-rss:0kB
    Sep 18 07:18:15 h27 kernel: Killed process 16988 (FlowCon.fresher) total-vm:33426556kB, anon-rss:30858472kB, file-rss:0kB, shmem-rss:0kB
    Sep 18 12:43:18 h27 kernel: Killed process 13595 (mongod) total-vm:32848996kB, anon-rss:30967520kB, file-rss:0kB, shmem-rss:0kB
    

    服务器的内存是64G,mongo的进程占了32G,还有一些其他程序,结果就OOM了。

    kill 的机制:先 kill 内存占用较大的程序

    解决问题

    服务器内存就64G,rocksdbCacheSizeGB 设置成50G太大了。将 rocksdbCacheSizeGB 缓存从50G调整到20G。

    cacheSizeGB 指的就是Cache size,包括数据和索引。Mongod本身使用内存如连接池堆栈以及sorting buffer等都是额外的,不会被统计到这个数字里面。如果索引在内存,查询冷数据取决于IO能力。如果IO latency很低,系统也没有是高负载,那响应时间应该是毫秒级的区别。但是如果查询很频繁,又涉及到很多范围、批量查询,IOPS又跟不上,那就有可能到几百几千毫秒都有可能。

    参考

    MongoDB内存配置 --wiredTigerCacheSizeGB

  • 相关阅读:
    ASP.NET MVC学习系列(二)-WebAPI请求
    dynamic介绍
    C#中dynamic的正确用法 以及 typeof(DynamicSample).GetMethod("Add");
    json中jobject
    泛型类型参数及约束
    new 运算符
    内核知识第五讲.驱动框架编写,以及3环和0环通信.
    编写内核驱动加载工具
    内核知识第四讲,简单的认识内核函数.以及调试驱动技巧
    内核第三讲,进入ring0,以及编写第一个内核驱动程序.
  • 原文地址:https://www.cnblogs.com/hiyang/p/13691943.html
Copyright © 2011-2022 走看看