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用户启动,使用非默认端口
  • 相关阅读:
    201621123037 《Java程序设计》第9周学习总结
    201621123037 《Java程序设计》第8周学习总结
    201621123037 《Java程序设计》第7周学习总结
    201621123037 《Java程序设计》第6周学习总结
    201621123037 《Java学习设计》 第五周学习总结
    201621123037 《Java程序设计》第4周学习总结
    201621123037 《Java程序设计》第3周学习总结
    myeclipse报Unhandld event loop Exception怎么解决
    Ajax 完整教程
    在JSP程序中我用新图片替换掉了原图片(名字,格式相同),为什么打开网页显示的还是以前的图片呢
  • 原文地址:https://www.cnblogs.com/caidingyu/p/12840908.html
Copyright © 2011-2022 走看看