zoukankan      html  css  js  c++  java
  • redis服务器性能优化

    1、系统内存OOM优化

    Redis会占用非常大内存,所以通常需要关闭系统的OOM,方法为将“/proc/sys/vm/overcommit_memory”的值设置为1(通常不建议设置为2)
    也可以使用命令sysctl设置,如:sysctl vm.overcommit_memory=1,但注意一定要同时修改文件/etc/sysctl.conf,执行“sysctl -p”,以便得系统重启后仍然生效。

    可选值:0、1、2。

    0: 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。 1: 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

    2: 表示内核允许分配超过所有物理内存和交换空间总和的内存

    # cat /proc/sys/vm/overcommit_memory
    0
    
    # echo vm.overcommit_memory = 1 >> /etc/sysctl.conf
    
    # sysctl -p
    
    2、关闭透明大页(THP)

    透明大页(THP)管理和标准/传统大页(HP)管理都是操作系统为了减少页表转换消耗的资源而发布的新特性。这二者的区别在于大页的分配机制,标准大页管理是预分配的方式,而透明大页管理则是动态分配的方式。有两种关闭方法:
    方法1:设置/etc/default/grub文件,在系统启动是禁用。

    修改
    
    [root@redis01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
    [always] madvise never
    [root@redis01 ~]# vim /etc/default/grub
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="crashkernel=auto biosdevname=0 net.ifnames=0 rhgb quiet transparent_hugepage=never"
    
    GRUB_DISABLE_RECOVERY="true"
    
     
    
    生效
    
    [root@redis01 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
    Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
    Found linux image: /boot/vmlinuz-0-rescue-6fdccda7f03241d0901c5b21f3d96fd9
    Found initrd image: /boot/initramfs-0-rescue-6fdccda7f03241d0901c5b21f3d96fd9.img
    done
    
    重启后检查
    [root@redis01 ~]# reboot
    
    [root@redis01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
    always madvise [never]
    [root@redis01 ~]#
    

    方法2:设置/etc/rc.local文件

    [root@redis01 ~]# cat /etc/rc.local 
    ###  close THP  ###
    if test -f /sys/kernel/mm/transparent_hugepage/enabled;then
      echo never  > /sys/kernel/mm/transparent_hugepage/enabled
    fi
    
    [root@redis01 ~]# chmod +x /etc/rc.d/rc.local
    [root@redis01 ~]# reboot
    
    [root@redis01 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
    always madvise [never]
    
    3、增大TCP队列的值

    此参数是指:已完成三次握手的TCP连接队列,默认值511,但是Linux系统内核参数socket最大连接的值默认是128,对应文件/proc/sys/net/core/somaxconn,当系统并发量大且客户端连接缓慢时,应该将两个值进行参考设置。

    建议将/proc/sys/net/core/somaxconn的值设置为2048, 如果重启生效,需要在/etc/sysctl.conf中设置: net.core.somaxconn = 2048 执行sysctl -p生效

    [root@redis01 ~]# cat /proc/sys/net/core/somaxconn
    128
    
    [root@redis01 ~]# echo "net.core.somaxconn = 2048" >> /etc/sysctl.conf 
    [root@redis01 ~]# sysctl -p
    vm.overcommit_memory = 1
    net.core.somaxconn = 2048
    
    4、增大linux最大打开文件数
    [root@redis01 ~]# cat /etc/security/limits.conf 
    
    * soft noproc 65535
    * hard noproc 65535
    * soft nofile 65535
    * hard nofile 65535 
    需要重启生效
    [root@redis01 ~]# ulimit -n 65535
    复制代码
    
    5、设置密码requirepass
    6、将危险命令使用rename-command设置为空或别名
    7、使用非root用户启动,使用非默认端口
  • 相关阅读:
    第一节:SpringMVC概述
    SpringMVC【目录】
    Windows 系统快速查看文件MD5
    (error) ERR wrong number of arguments for 'hmset' command
    hive使用遇到的问题 cannot recognize input
    Overleaf支持的部分中文字体预览
    Understanding and Improving Fast Adversarial Training
    Django2实战示例 第十三章 上线
    Django2实战示例 第十二章 创建API
    Django2实战示例 第十一章 渲染和缓存课程内容
  • 原文地址:https://www.cnblogs.com/caidingyu/p/12840908.html
Copyright © 2011-2022 走看看