• 源码编译redis及解决三个开机告警问题


    源码编译redis包

    下载当前最新 release 版本 redis源码包:选择4.0.14版本

    http://download.redis.io/releases/

    1、开始在官网上下载包,下载到指定的路径

    [root@rs1src]#cd /usr/local/src
    [root@rs1src]#wget http://download.redis.io/releases/redis-4.0.14.tar.gz

     2、将下载好的包进行解压

    [root@rs1src]#tar -xvf redis-4.0.14.tar.gz 
    

     3、新建一个目录,并开始编译到指定的目录里

    [root@rs1redis-4.0.14]#mkdir /apps/redis  -p
    [root@rs1redis-4.0.14]#make PREFIX=/apps/redis  install
    

     4、查看编译后的文件内容

     

      5、将编译的配置文件存放在新建的etc目录下

    [root@rs1redis-4.0.14]#mkdir /apps/redis/etc   新建一个etc目录
             
    [root@rs1redis-4.0.14]#cp redis.conf /apps/redis/etc/  将配置文件复制到etc目录下
    

     6、启动redis服务,此时就会有三个警告,需要我们进行处理

     

    7、开始处理三个警告问题

    第一个警告处理:backlog参数控制的是三次握手的时候 server 端收到 client ack 确认号之后 的队列值 。

    第二个警告处理:

    0、表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。

    1、表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

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

    [root@rs1redis-4.0.14]#vim /etc/sysctl.conf  解决前两个警告
    net.core.somaxconn = 512  
    vm.overcommit_memory = 1
    
    [root@rs1redis-4.0.14]#sysctl -p  将此配置文件进行生效
    net.core.somaxconn = 512
    vm.overcommit_memory = 1
    

    第三个警告处理:开启大页内存动态分配 ,需要关闭让 redis 负责 内存管理,确保此配置文件生效情况,可以进行重启机器验证。

    需要执行此命令,并设置为开机启动:echo never > /sys/kernel/mm/transparent_hugepage/enabled

    [root@rs1redis-4.0.14]#vim  /etc/rc.d/rc.lcoal
    
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    
    [root@rs1redis-4.0.14]#chmod +x /etc/rc.d/rc.local   加上执行权限

    重启机器后就没有警告信息:

     8、配置基于systemd进行启动redis服务脚本

    [root@rs1~]#vim  /usr/lib/systemd/system/redis.service
    [Util]
    Description=Redis persistent key-value database
    After=network.target
    After=network online.target
    Wants=network online.target
    
    [Service]
    ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    Type=notify
    User=redis
    Group=redis
    RuntimeDirectory=redis
    RuntimeDirectoryMode=0755
    
    [install]
    WantedBy=multi-user.target
    

    9 、创建一个redis用户,并将执行redis目录的权限(所有者和所属组)改为redis

    [root@rs1~]#useradd -s /sbin/nologin redis
    [root@rs1~]#chown redis.redis /apps/redis -R
    [root@rs1~]#systemctl start redis 启动redis服务,此用法不多
    

    10、我们可以将redis目录下可执行的程序全部软链接到/usr/bin目录,就可以直接执行redis-server命令。

    [root@rs1~]#ln -sv /apps/redis/bin/redis-*  /usr/bin  将可执行程序软连接到/usr/bin目录下
    [root@rs1~]#redis-server   启动redis服务
    

    此时,redis源码编译完成!  

      

     

      

      

      

  • 相关阅读:
    3星|《腾讯产业森林:AI时代的创业密码》:后半部分是较详细的创业指南,前面泛泛介绍腾讯、AI
    3星|《三联生活周刊》2017年49期:小孩子一般在3岁时开始学会说“黑色”谎言,也就是专门利己毫不利人的谎言
    VS2010调试 --指南 Reference from : http://blog.csdn.net/kingzone_2008/article/details/8133048
    画图------Brush
    JavaScript Function.apply() 函数详解
    window.addEventListener来解决让一个js事件执行多个函数
    C# 框架是什么?MVC是什么 ?工厂模式是什么?设计模式是什么?三层架构是什
    C#反射机制介绍
    javascript 小日历
    javascript里的post和get有什么区别
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/12116664.html
Copyright © 2020-2023  润新知