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


    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、设置具体用户可用的文件描述符数量  

  • 相关阅读:
    HTTP协议开发应用-文件服务器
    编解码-marshalling
    编解码-protobuf
    编解码-java序列化
    算法笔记_114:等额本金(Java)
    算法笔记_113:算法集训之代码填空题集一(Java)
    算法笔记_112:第五届蓝桥杯软件类省赛真题(Java本科B组)试题解答
    算法笔记_111:第五届蓝桥杯软件类省赛真题(Java本科A组)试题解答
    算法笔记_110:第四届蓝桥杯软件类省赛真题(JAVA软件开发高职高专组部分习题)试题解答
    算法笔记_109:第四届蓝桥杯软件类省赛真题(JAVA软件开发本科B组部分习题)试题解答
  • 原文地址:https://www.cnblogs.com/lwhctv/p/12322576.html
Copyright © 2020-2023  润新知