Mongodb 启动报错:"/sys/kernel/mm/transparent_hugepage/enabled is 'always'"

本文介绍了在CentOS 6.7环境下安装MongoDB时遇到的警告信息及其解决方案。通过调整透明大页设置并修改进程限制,成功消除了安装过程中的所有警告。
部署运行你感兴趣的模型镜像

系统环境

Distributor ID: CentOS
Description:    CentOS release 6.7 (Final)
Release:    6.7
Codename:   Final

问题描述

在系统上安装mongodb之后报错。
(安装教程地址: https://docs.mongodb.com/master/tutorial/install-mongodb-on-red-hat/)

错误信息:
WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.We suggest setting it to ‘never’
WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’.We suggest setting it to ‘never’
WARNING: soft rlimits too low. rlimits set to 1024 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.
如图:
mongodb报错

解决方案

前两个warning

sudo echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
sudo echo "never" >  /sys/kernel/mm/transparent_hugepage/defrag

第三个warning

vim /etc/security/limits.conf
添加一下几行
mongod  soft  nofile  64000
mongod  hard  nofile  64000
mongod  soft  nproc  32000
mongod  hard  nproc  32000

重启mongod

sudo service mongod restart

成功

重启成功之后,所有报错都没啦,如下

➜  ~ git:(master) mongo
MongoDB shell version: 3.2.6
connecting to: test
>

您可能感兴趣的与本文相关的镜像

Facefusion

Facefusion

AI应用

FaceFusion是全新一代AI换脸工具,无需安装,一键运行,可以完成去遮挡,高清化,卡通脸一键替换,并且Nvidia/AMD等显卡全平台支持

<think>好的,我现在需要回答用户关于/sys/kernel/mm/transparent_hugepage/defrag的问题。首先,我得先理解这个文件的作用和它在Linux系统中的位置。 透明大页(Transparent HugePages,THP)是Linux内核的一个特性,用于提升内存管理的效率。大页可以减少页表项的数量,降低TLB(Translation Lookaside Buffer)的缺失率,从而提升性能。而defrag(碎片整理)相关的设置应该和THP如何处理内存碎片有关。 接下来,我需要确认/sys/kernelernel/mm/transparent_hugepage/defrag这个路径的具体作用。记得在Linux系统中,/sys下的文件通常用于内核参数的配置。这里的defrag可能控制着THP在分配大页时如何处理内存碎片。 可能的取值有哪些呢?常见的选项可能有always、madvise、never、defer、defer+madvise等。每个选项对应不同的碎片整理策略。比如,always表示总是积极进行碎片整理,而madvise可能只在特定的内存区域使用。 需要进一步解释每个选项的具体行为。例如,always模式可能会在分配失败时进行同步的碎片整理,这可能导致延迟增加。而defer模式可能将碎片整理工作推迟到内核的kswapd或kcompactd线程中,减少对应用程序的影响。 此外,不同的应用场景下如何调整这个参数?比如,对于需要低延迟的应用,可能需要设置为defer或madvise来避免同步整理带来的延迟峰值。而对于需要最大化性能且可以接受一定延迟的应用,可能使用always。 还要注意,不同内核版本的选项可能有所不同,需要查阅相关版本的文档。比如,某些旧版本可能不支持defer+madvise这样的组合选项。 可能还需要提到如何查看当前系统的设置,比如使用cat命令查看该文件的内容,以及如何临时或永久修改这个设置。例如,使用echo命令临时修改,或者修改grub配置永久生效。 需要确保信息的准确性,最好参考官方内核文档或可靠来源。如果有不确定的地方,应该指出并建议用户查阅官方文档或进行进一步测试。 总结一下,回答的结构应该是先介绍透明大页和碎片整理的概念,然后详细说明defrag文件的作用、可用选项及其影响,最后给出使用建议和操作方法。要使用中文,避免技术术语过多,保持清晰易懂。</think>/sys/kernel/mm/transparent_hugepage/defrag 是 Linux 内核中与透明大页(Transparent HugePages, THP)碎片整理策略相关的控制文件。以下是对该配置项的详细介绍: ### 核心作用 控制透明大页在内存碎片化时的处理策略,通过调整内核的碎片整理频率和方式,平衡内存分配效率与系统性能。 --- ### 可选参数值及含义 1. **always** - 积极同步整理碎片 - 当大页分配失败时,立即触发直接内存回收和压缩 - 可能引发进程延迟(适合对延迟不敏感的场景) 2. **defer** - 延迟整理策略 - 将碎片整理任务交给后台线程 kswapd/kcompactd - 减少直接延迟(适合数据库等低延迟场景) 3. **defer+madvise** - 混合策略 - 对普通内存使用 defer 策略 - 对标记 MADV_HUGEPAGE 的内存区域使用主动整理 4. **madvise** - 仅对显式请求大页的内存区域进行整理 - 需要应用程序主动调用 madvise() 5. **never** - 完全禁用碎片整理 - 可能导致大页分配失败率升高 --- ### 典型应用场景 | 配置值 | 适用场景 | 性能影响 | |--------------|-----------------------------------|------------------------------| | `always` | 计算密集型负载 | 高吞吐量但可能产生延迟毛刺 | | `defer` | MySQL/MongoDB 等数据库系统 | 降低尾延迟 | | `madvise` | 可主动管理内存的应用程序 | 需配合应用层调优 | | `never` | 内存极度充裕的环境 | 完全避免整理开销 | --- ### 操作示例 ```bash # 查看当前配置 cat /sys/kernel/mm/transparent_hugepage/defrag # 临时修改配置(需要root权限) echo defer > /sys/kernel/mm/transparent_hugepage/defrag # 永久生效(修改GRUB配置) 在/etc/default/grub中添加: transparent_hugepage=defer ``` --- ### 注意事项 1. 内核版本差异:4.x 以上内核新增 `defer+madvise` 混合模式 2. 监控指标:需结合 `thp_fault_alloc` / `thp_collapse_alloc` 等/proc统计信息分析 3. 应用特性:Oracle DB 等建议禁用 THP,而 Redis 等内存密集型服务可能受益 建议通过实际压力测试确定最佳配置,不同工作负载表现差异显著。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值