mongoDb 报错Too many open files

使用ulimit -a查看,发现打开文件数只有1024,默认是max open files 1024,想着改高不就好了吗

使用ulimit -n 204800临时修改(重启失效),发现依旧报错,应该是和用户不一样有关

修改linux的软硬件限制文件/etc/security/limits.conf

root soft nofile 655350
root hard nofile 655350
* soft nofile 65535
* hard nofile 65535
* soft memlock unlimited
* hard memlock unlimited
gbase soft nofile 655350
* soft nproc 65536
* hard nproc 65536

重启发现也没有效果...

 

查出MongoDB的PID

ps aux | grep mongod

查看进程现在启动的进程限制: 

cat /proc/${PID}/limits

默认是max open files 1024,在这里我们可以直接修改进程的限制,prlimit --pid 1754103 --nofile=204800:204800这是临时的,进程关闭就失效。

对于单个service永久生效,可以在service文件中添加,如本次的Mongod.service,修改后:

[Unit]
Description=Mongodb Service
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/Raid_disk/mongodb/mongodb-5.0.14/bin/mongod -f /Raid_disk/mongodb/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/Raid_disk/mongodb/mongodb-5.0.14/bin/mongod -f /Raid_disk/mongodb/mongodb.conf --shutdown
PrivateTmp=true
#配置文件限制
LimitCORE=infinity
LimitNOFILE=204800
LimitNPROC=204800

[Install]
WantedBy=multi-user.target

 

对所有systemctl 管理的进程管理配置

vim /etc/systemd/system.conf 
[Manager]
DefaultLimitCORE=infinity
DefaultLimitNOFILE=204800
DefaultLimitNPROC=65535

vim /etc/systemd/user.conf
[Manager]
DefaultLimitCORE=infinity
DefaultLimitNOFILE=204800
DefaultLimitNPROC=65535

#生产环境一般处于禁用状态
DefaultLimitCORE=infinity
#核心转储文件大小不限制,它是进程运行时突然崩溃的那一刻的内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里,可使用 gdb 工具来分析。core dump 生产环境一般处于禁用状态,对于内存消耗性的进程,core dump 时会占用很多系统资源,磁盘空间也可能被写满。
DefaultLimitNOFILE=1048576
#服务进程可以打开文件的最大数目为1048576
DefaultLimitNPROC=65535
#进程可以打开的最大线程数目为65535

 

如何查看现在打开的文件数
[root@Oracle11G bjjh]# ps -ef|grep mongo
root 1752 1 0 May05 ? 00:16:40 mongod -f /etc/mongod.conf
root 12887 11251 0 15:28 pts/1 00:00:00 grep mongo

[root@Oracle11G bjjh]# cd /proc/1752/fd

查看打开文件数
[root@Oracle11G fd]# ls |wc -l
102

 

-----后续更新

debian设置limits.conf的open files后不生效的原因是,root用户对*号不生效,需要单独设置。

root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535

修改后重新连接ssh即可ulimit -a查看,修改前已链接的ssh不生效。

版权声明:
作者:tianya
链接:https://tya.zone/p/148.html
来源:天涯博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
mongoDb 报错Too many open files
使用ulimit -a查看,发现打开文件数只有1024,默认是max open files 1024,想着改高不就好了吗 使用ulimit -n 204800临时修改(重启失效),发现依旧报错,应……
<<上一篇
下一篇>>