• redis优化


    master禁用数据持久化,只在slave上配置数据持久化

    物理内存+虚拟内存不足,这个时候dump一直死着,时间久了机器挂掉

    当Redis物理内存使用超过内存总容量的3/5时就会开始比较危险了,就开始做swap,内存碎片大
    当达到最大内存时,会清空带有过期时间的key,即使key未到过期时间。

    redis优化

    1.redis安全

    ①为redis客户端设置外部链接密码

    警告: 
    因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在1秒内进行上万次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。

    方法一:
    vim /usr/local/redis/conf/redis.conf                 #修改redis配置文件,添加密码
    requirepass 123456
    #重启redis
    redis-cli shutdown
    redis-server /usr/local/redis/conf/redis.conf
    方法二:
    #交互式登陆redis设置密码
    redis-cli                        #登录redis
    config set requirepass 123456           #设置密码 
    config rewrite              #将配置重写进行保存
    
    特别提示: 
    redis没有用户的概念,只能设置连接密码,并且redis的连接速度非常快。因此密码需要设置的很复杂才安全。

    ②将危险的命令改名  Redis禁用屏蔽危险命令

    FLUSHALL和FLUSHDB会清除redis的数据,比较危险 
    KEYS在键过多的时候使用会阻塞业务请求

    #修改配置文件
    vim /usr/local/redis/conf/redis.conf
    rename-command set "sset"        #将set修改为sset    
    rename-command keys ""          #屏蔽掉keys命令不使用
    rename-command FLUSHALL ""        #将命令改名成空
    rename-command FLUSHDB ""         #将命令改名成空

     

     

    系统参数优化调整 

    (1)调整系统文件描述符

    echo "* - nofile 10240" >> /etc/security/limits.conf    #设置系统文件描述符
    bash          #刷新                                     ulimit
    -n        #查看系统文件描述符

    (2)调整系统的TCP连接数

    echo "net.core.somaxconn = 10240" >> /etc/sysctl.conf   #修改配置文件设置TCP连接数
    sysctl -p          #查看tcp连接数
    net.core.somaxconn = 10240

    (3)调整系统内存分配策略

    echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf     #调整内存分配策略当redis定义内存将要满时,抢占系统内存
    sysctl -p

    (4)关闭系统内核的巨大内存页支持

    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    
    echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local     #设为开机自启动
    echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local      

    Redis最大内存设置和删除算法

    #默认对内存无限制
    set maxmemory 1M       #限制1M
    get maxmemory          #查看

    可选择的删除算法

    volatile-lru: 
    使用LRU算法删除键(key需要设置过期时间)
    volatile-random: 
    随机删除键(key需要设置过期时间)
    volatile-ttl: 
    删除ttl最小的键(key需要设置过期时间)
    allkeys-lru: 
    使用LRU算法删除键(所有key)
    allkeys-random: 
    随机删除键(所有key)
    noeviction: 
    不进行任何的操作,只返回错误,默认
    redis-cli config get maxmemory-policy     #查看内存清理算法
    1) "maxmemory-policy"
    2) "noeviction"                     #默认noeviction

     

  • 相关阅读:
    Java_swing控件实例
    java_泛型 TreeSet 判断hashcode/length(升序排列)
    java_泛型(设置通配符下限)
    java_泛型(构造器)部分实例
    子类可以继承的同时实现接口
    继承类的线程写法
    匿名内部类的线程写法
    接口作为参数并用参数变量可以调用接口中的方法------------------需要多练习
    类可以作为参数类型,参数的变量还能调用作为参数类型的方法--------------需要多练习
    接口和类
  • 原文地址:https://www.cnblogs.com/ywrj/p/9526790.html
Copyright © 2020-2023  润新知