中间件机器操作系统内核优化

1、内核分配策略:参数overcommit_memory

echo "1" > /proc/sys/vm/overcommit_memory
vm.overcommit_memory
含义
0 表示内核将检查是否有足够的可用内存。如果有足够的可用内存,内存申请通过,否则内存申请失败,并把错误返回给应用进程
1 表示内核允许超量使用内存直到用完为止
2 表示内核决不过量的(“never overcommit”)使用内存,即系统整个内存地址空间不能超过swap+50%的RAM值,50%是overcommit_ratio默认值,此参数同样支持修改

2、swap分配策略swappiness,强制关闭系统swap

swapniess
策略
0 Linux3.5以及以上:宁愿OOM killer也不用swap
Linux3.4以及更早:宁愿swap也不要OOM killer
1 Linux3.5以及以上:宁愿swap也不要OOM killer
60 默认值
100 操作系统会主动地使用swap

3、Transparent Huge Pages 

echo never > /sys/kernel/mm/transparent_hugepage/enabled

Redis建议修改Transparent Huge Pages (THP)的相关配置,Linux kernel在2.6.38内核增加了Transparent Huge Pages (THP)特性 ,支持大内存页(2MB)分配,默认开启。当开启时可以降低fork子进程的速度,

但fork之后,每个内存页从原来4KB变为2MB,会大幅增加重写期间父进程内存消耗。同时每次写命令引起的复制内存页单位放大了512倍,会拖慢写操作的执行时间,导致大量写操作慢查询。例如简单的

incr命令也会出现在慢查询中。因此Redis日志中建议将此特性进行禁用,禁用方法如下:

Elasticsearch:

1、swap分配策略swappiness,强制关闭系统swap

swapniess
策略
0 Linux3.5以及以上:宁愿OOM killer也不用swap
Linux3.4以及更早:宁愿swap也不要OOM killer
1 Linux3.5以及以上:宁愿swap也不要OOM killer
60 默认值
100 操作系统会主动地使用swap

2、定义了每个端口最大的监听队列的长度 vm.max_map_count = 65535

3、限制一个进程可以拥有的VMA(虚拟内存区域)的数量  vm.max_map_count=262144

4、设置 Linux 内核分配的文件句柄的最大数量 fs.file-max=518144

5、设置具体用户可用的文件描述符数量 

6、设置锁定内存,拒绝swapping

     vim /etc/sysctl.conf

     vim /etc/security/limits.conf

7、VM锁住内存,不让JVM写入swapping,避免降低ES的性能  bootstrap.mlockall: true

8、设置各部分所占用的缓存比例,默认是没有限制的,很可能会撑爆 JVM 堆空间(设置 fielddata 会影响搜索性

      indices.fielddata.cache.size40%

      indices.cache.filter.size: 30%

      indices.cache.filter.terms.size: 1024mb

9、线程池的设置, size 默认是 处理器核数的 5 倍

     threadpool.search.typecached

     threadpool.search.size: 100

     threadpool.search.queue_size: 2000

RocketMQ:

1、swap分配策略swappiness,强制关闭系统swap

swapniess
策略
swapniess
策略
0 Linux3.5以及以上:宁愿OOM killer也不用swap
Linux3.4以及更早:宁愿swap也不要OOM killer
1 Linux3.5以及以上:宁愿swap也不要OOM killer
60 默认值
100 操作系统会主动地使用swap

2、设置系统预留最小内存

sudo sysctl -w vm.min_free_kbytes=1000000

设置系统需要保留的最小内存大小。当系统内存小于该数值时,则不再进行内存分配。这个命令默认被注释掉,根据文档看,如果设置了不恰当的值,比如比实际内存大,则系统可能直接就会崩溃掉。实际数值应该根据RocketMQ部署机器的内存进行计算,经验数值大概是机器内存的5% - 10%。

这个数值设置的过高,则内存浪费。若设置的过低,那么在内存消耗将近时,RocketMQ的Page Cache写入操作可能会很慢,导致服务不可用。

3、设置 Linux 内核分配的文件句柄的最大数量 fs.file-max=518144

4、设置具体用户可用的文件描述符数量  

猜你喜欢

转载自www.cnblogs.com/lwhctv/p/12322576.html