zoukankan      html  css  js  c++  java
  • centos8上redis5在生产环境的配置

    一,创建redis的数据和日志目录:

    [root@yjweb data]# mkdir /data/redis6379
    [root@yjweb data]# mkdir /data/redis6379/data
    [root@yjweb data]# mkdir /data/redis6379/log

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

     说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,redis运行环境的linux配置

    1,设置系统中每个端口的监听队列的最大的长度

    [root@yjweb log]# sysctl -a | grep somaxconn
    net.core.somaxconn = 128

    我们修改为大于redis中的TCP backlog值

    说明:redis中的TCP backlog值默认是511

    tcp-backlog 511
    [root@yjweb log]# vi /etc/sysctl.conf

    增加一行:

    net.core.somaxconn = 1024

    使配置起作用:

    [root@yjweb log]# sysctl -p

    说明:

    sysctl命令用来显示和配置内核运行时参数
    -a:显示所有的配置参数
    -p:从/etc/sysctl.conf加载配置

    参见:

    [root@yjweb log]# man sysctl

    2,配置overcommit_memory

    说明:内核参数overcommit_memory 

    它是 内存分配策略

    有三个值可用:0、1、2。

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

    这里面,2这种策略不够安全,

    0有可能发生申请失败的情况

    redis建议我们采用1的策略

    编辑内核参数配置文件

    [root@yjweb log]# vi /etc/sysctl.conf

    增加一行:

    vm.overcommit_memory=1

    使配置起作用:

    [root@yjweb log]# sysctl -p

    检查是否生效

    [root@yjweb log]# sysctl -a | grep overcommit_memory
    vm.overcommit_memory = 1

    说明;此处注意给redis分配的内存大小

    maxmemory的值不要超过物理内存的四分之三,

    否则有可能引发系统内存不足

    3,关闭Transparent Huge Pages(THP)

    [root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
    [always] madvise never

    说明:透明大页内存管理会影响数据的访问速度,可以关闭

    关闭方法:

    [root@yjweb log]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
    [root@yjweb log]# cat /sys/kernel/mm/transparent_hugepage/enabled
    always madvise [never]

    成功了,为了保证开机重启后还能自动写入配置,

    参见这一篇:

    centos8下启用rc-local服务
    地址:https://www.cnblogs.com/architectforest/p/12467474.html

    二,修改配置文件redis.conf 

    [root@yjweb conf]# vi /usr/local/soft/redis5/conf/redis.conf 

    内容:

    1,指定监听的本地ip

    bind 10.51.136.133

    说明:如果bind 127.0.0.1   则只能从本机访问。

             请确认是否只从本机访问redis,

             否则建议设置为可以从网络访问的地址

    2,保护模式:

    protected-mode yes

    说明:

    protected-mode 会在没有设置 bind 和 密码时起作用,

    建议protected-mode设置为yes

    3,指定端口号

    port 6379

    说明:

    如果在同一台机器上运行多个redis实例,各个实例的端口要区分开

    4,指定密码:

    requirepass demopassword

    说明:安全起见,此处应该指定一个有复杂度的密码

    5,指定以daemon方式运行

    daemonize yes

    6,loglevel : 保持值为notice即可:

    loglevel notice

    说明:

    # This can be one of:
    # debug (a lot of information, useful for development/testing)
    # verbose (many rarely useful info, but not a mess like the debug level)
    # notice (moderately verbose, what you want in production probably)
    # warning (only very important / critical messages are logged)

    7,logfile 指定日志文件路径

    logfile "/data/redis6379/log/redis.log"

    使用上面创建的路径

    8,指定数据文件的路径

    dir /data/redis6379/data/

    说明:此处的值只能是一个目录

    9,使用的最大内存容量

    maxmemory 128MB

    10,最大并发连接数

    maxclients 10000

    不建议修改,注意这个值应该在ulimit -n 返回的值以内

    ulimit -n 显示的是linux系统里单用户打开文件描述符的最大值

    11,slowlog的时长:

    # The following time is expressed in microseconds, so 1000000 is equivalent
    # to one second. Note that a negative number disables the slow log, while
    # a value of zero forces the logging of every command.
    
    slowlog-log-slower-than 10000

    说明:这个值的单位是微秒,

              默认值10000即10毫秒

    注意不要设置为0,因为它会记录所有命令

    12,slowlog的最大记录数

    # There is no limit to this length. Just be aware that it will consume memory.
    # You can reclaim memory used by the slow log with SLOWLOG RESET.
    
    slowlog-max-len 512

    说明:默认值是128,

             我们适当加大,这个值也可以从命令行中动态配置

    例子:

    127.0.0.1:6379> config set slowlog-max-len 1024
    OK

    说明:如何把动态配置的参数写入到配置文件当中?

    127.0.0.1:6379> config rewrite
    OK

    修改完成后重启:

    [root@yjweb conf]# systemctl stop redis
    [root@yjweb conf]# systemctl start redis 

    四,如何查看redis的慢查询日志?

    1,当前的慢查询日志共多少条?

    10.51.136.133:6379> slowlog len
    (integer) 128

    2,显示两条慢查询日志

    10.51.136.133:6379> slowlog get 3
    1) 1) (integer) 709
       2) (integer) 1545732832
       3) (integer) 13846
       4) 1) "HGETALL"
          2) "promotion_goods_detail"

    说明:

         第一个值:#日志的唯一标识符

         第二个值:#命令执行是的UNIX时间戳

         第三个值:#命令执行的时长,单位微妙

          第四个值:#执行的命令及命令参数

    3,清除所有的slowlog

    127.0.0.1:6379> slowlog reset

    五,查看redis的版本

    [root@yjweb ~]$ /usr/local/soft/redis5/bin/redis-server --version
    Redis server v=5.0.7 sha=00000000:0 malloc=libc bits=64 build=7abb9ee9ee0ce29b

    六,查看centos的版本

    [root@yjweb ~]$ cat /etc/redhat-release
    CentOS Linux release 8.0.1905 (Core)
  • 相关阅读:
    QT学习笔记2
    QT学习笔记1
    图像中区域生长算法的详解和实现
    图像识别中的深度学习 转
    Appium基础环境搭建(windows)---基于python
    selenium实现文件上传方法汇总(AutoIt、win32GUI、sengkeys)---基于python
    selenium中的三种等待方式(显示等待WebDriverWait()、隐式等待implicitly()、强制等待sleep())---基于python
    水仙花数---基于python
    九九乘法表实现---基于python
    selenium元素定位不到之iframe---基于python
  • 原文地址:https://www.cnblogs.com/architectforest/p/12490841.html
Copyright © 2011-2022 走看看