• 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用户启动,使用非默认端口
  • 相关阅读:
    20191028 Codeforces Round #534 (Div. 1)
    20191028 牛客网CSP-S Round2019-1
    UVA11464 Even Parity 搜索+递推
    CSP2019-S1 游记
    LG2921 [USACO2008DEC]Trick or Treat on the Farm 内向基环树
    bzoj 2002 Bounce 弹飞绵羊
    快速乘,快速幂,十进制快速幂,矩阵快速幂
    2019牛客暑期多校训练营(第五场) generator 1
    2019牛客暑期多校训练营(第五场) digits 2
    hdu 4714 Tree2cycle
  • 原文地址:https://www.cnblogs.com/caidingyu/p/12840908.html
Copyright © 2020-2023  润新知