刚搬新家,正想试试 MongoDB 的LBS,宿舍电脑使用热点下载速度感人,正好发现服务器宝塔上面可以一键安装 MongoDB,刚刚装好启动就给我4个警告
Server has startup warnings:
2020-09-11T00:04:19.257+0800 I STORAGE [initandlisten]
2020-09-11T00:04:19.257+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
2020-09-11T00:04:19.257+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
2020-09-11T00:04:19.491+0800 I CONTROL [initandlisten]
2020-09-11T00:04:19.491+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2020-09-11T00:04:19.491+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2020-09-11T00:04:19.491+0800 I CONTROL [initandlisten]
2020-09-11T00:04:19.491+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2020-09-11T00:04:19.491+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2020-09-11T00:04:19.491+0800 I CONTROL [initandlisten]
2020-09-11T00:04:19.491+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 7270 processes, 100001 files. Number of processes should be at least 50000.5 : 0.5 times number of files.
2020-09-11T00:04:19.491+0800 I CONTROL [initandlisten]
1、WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 》 强烈建议使用带WiredTiger存储引擎的XFS文件系统
经查 环境使用的是EXT4文件系统,官方不建议,但不影响使用。无法解决先略过
2、WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
3、WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
这两个问题是CentOS7特有的,因为从CentOS7版本开始会默认启用 Transparent Huge Pages(THP)
Transparent Huge Pages(THP)本意是用来提升内存性能,但某些数据库厂商还是建议直接关闭THP(比如说Oracle、MariaDB、MongoDB等),否则可能会导致性能出现下降。
- 查看THP状态
[root@VM-0-17-centos ~]# cat /sys/kernel/mm/transparent_hugepage/defrag [always] madvise never [root@VM-0-17-centos ~]# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never [root@VM-0-17-centos ~]#
关闭这两个状态
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
4、soft rlimits too low. rlimits set to 7270 processes, 100001 files. Number of processes should be at least 50000.5 : 0.5 times number of files.
根据提示,用户可获得的进程数过小,我们至少需要将用户可获得的进程数设置为 50000.5 的 0.5 倍 也就是 50000.5 * 1.5 = 75,000.25 我们直接设置 76000 就好了
修改配置文件 /etc/security/limits.conf
vim /etc/security/limits.conf
末尾添加
vim /etc/security/limits.conf 添加一下几行 mongo soft nofile 76000 mongo hard nofile 76000 mongo soft nproc 32000 mongo hard nproc 32000
然后 执行一步 ulimit -u 76000
- 第一步是永久生效process
- 第二步是即时当前会话生效process
如果上面这一步设置无效的话,可以试一下下面这个步骤,编辑这个文件夹下的配置文件,名称可能不同,我的文件是20-nproc.conf
vim /etc/security/limits.d/20-nproc.conf
将上面的配置填上,完成效果如下,记得用户名是mongo
不是 mongod
这样就不用重启服务器啦,不然重启之后才会生效
linux资源限制配置文件是/etc/security/limits.conf;限制用户进程的数量对于linux系统的稳定性非常重要。
limits.conf文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量。* soft nofile 76000#任何用户可以打开的最大的文件描述符数量,默认1024,这里的数值会限制tcp连接 * hard nofile 76000 * soft nproc 76000#任何用户可以打开的最大进程数 * hard nproc 76000 @student hard nofile 76000 @student soft nofile 4096 @student hard nproc 50 #任何人不能拥有超过50个进程,并且会在拥有30个进程时发出警告 @student soft nproc 30
- hard和soft两个值都代表什么意思呢?
soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错