MongoDB文件句柄数限制

MongoDB文件句柄数限制

在实际使用mongodb时, 由于分表较多, 每个表又有若干索引. 当业务量起来时, 经常出现连接池socket连接断开的错误, 排查mongodb的日志, 发现基本都是"Too many open files"错误.

排查问题
  1. 查看当前文件的数量限制

    [root@ip-172-16-1-149 rocky]# ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 29303
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 655350
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 655350
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    

    重点看open files​的值, 此处是655350, 理论上是够用的.

  2. 查找到mongodb的进程

    [root@ip-172-16-1-149 rocky]# ps -axu | grep mongod
    root      647090  2.9 11.3 3419876 860280 ?      Sl   05:56   2:02 /usr/bin/mongod -f /etc/mongod.conf
    
  3. 查看mongodb进行的限制

    [root@ip-172-16-1-149 rocky]# cat /proc/647090/limits
    Limit                     Soft Limit           Hard Limit           Units
    Max cpu time              unlimited            unlimited            seconds
    Max file size             unlimited            unlimited            bytes
    Max data size             unlimited            unlimited            bytes
    Max stack size            8388608              unlimited            bytes
    Max core file size        0                    unlimited            bytes
    Max resident set          unlimited            unlimited            bytes
    Max processes             29303                29303                processes
    Max open files            1024                 65535                files
    Max locked memory         65536                65536                bytes
    Max address space         unlimited            unlimited            bytes
    Max file locks            unlimited            unlimited            locks
    Max pending signals       29303                29303                signals
    Max msgqueue size         819200               819200               bytes
    Max nice priority         0                    0
    Max realtime priority     0                    0
    Max realtime timeout      unlimited            unlimited            us
    

    可以看到mongodb进程open files​数量限制中, 被Soft Limit​限制为1024了

  4. 临时方案修改

    [root@ip-172-16-1-149 rocky]# prlimit --pid 647090--nofile=65535:65535
    

    再次通过查看/proc/{pid}/limits​可以看到, open files​的限制都被修改为65535了. 但是这种方式只能针对这个mongodb进程临时生效, 当mongodb重启后又会恢复为之前的状态

  5. 永久方案修改

    在实际操作时, 修改service信息没有生效, 暂时没有继续研究了, 后续可以参考以下文档进行测试

    too many open files 问题解决方法

    MongoDB Too many open files 异常的解决

    MongoDB报Too many open files解决方法

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值