环境说明
机器名 |
IP |
软件版本 |
硬件配置 |
redis4-srv |
10.80.1.13 |
Redis 4.0.11 |
6核/16G/80G |
系统优化
我们已经完成了redis的虚拟机的申请,并且安装完成了zabbix监控和ntp配置,为了更好的使用redis,我们对系统做一些优化。
设置与内存有关的内存参数
Redis中不需要使用与数据集大小相同的空闲内存。但是Linux在默认情况下可能会检查是否有足够的空闲内存来复制父进程的所有内存页,可能导致Out of Memory而崩溃。所以要将overcommit设为1,表示当一个程序调用诸如malloc()等函数分配内存时,即使系统没有足够的内存空间函数也会执行成功。
swappiness参数值越大,内核进行内存交换越激进。
启用虚拟内存后,redis会尝试访问磁盘上的虚拟内存。会导致redis被磁盘I/O阻塞。redis我们要发挥他的高速处理能力,所以设置成swappiness=0禁用交换分区。
# sysctl -w vm.overcommit_memory=1
# sysctl -w vm.swappiness=0
持久化保存这些参数
# echo “vm.overcommit_memory=1” >> /etc/sysctl.conf
# echo “vm.swappiness=0” >> /etc/sysctl.conf
检查参数是否已被设置
# sysctl vm.overcommit_memory vm.swappiness
禁止透明大页功能
使用透明大页功能会导致持久化的子进程创建缓慢,所以禁用。
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
持久化保存这些设置
# cat >> /etc/rc.local << EOF
> echo never > /sys/kernel/mm/transparent_hugepage/enabled
> echo never > /sys/kernel/mm/transparent_hugepage/defrag
> EOF
检查参数是否已被设置
# cat /sys/kernel/mm/transparent_hugepage/enabled
# cat /sys/kernel/mm/transparent_hugepage/defrag
网络优化,设置与网络相关的内核参数
默认的2个参数是128.设置大一点可以优化TCP连接。
# sysctl -w net.core.somaxconn=65535
# sysctl -w net.ipv4.tcp_max_syn_backlog=65535
持久化保存参数
# echo “net.core.somaxconn=65535” >> /etc/sysctl.conf
# echo “net.ipv4.tcp_max_syn_backlog=65535” >> /etc/sysctl.conf
检查参数是否已被设置
# sysctl net.core.somaxconn net.ipv4.tcp_max_syn_backlog
安装编译环境
# yum -y install gcc gcc-c++ libstdc++-devel zlib-devel
安装redis
# cd /usr/local/
# wget wget http://download.redis.io/releases/redis-4.0.11.tar.gz
# tar -zxvf redis-4.0.11.tar.gz
# ls
改名下文件夹
# mv redis-4.0.11 redis
# rm redis-4.0.11.tar.gz
进入解压后的目录进行编译
# cd redis/
# make
# make install
开通防火墙
redis默认是用6379端口的所以我们开下这个端口
# firewall-cmd –permanent –zone=public –add-port=6379/tcp
# firewall-cmd –reload
配置redis
建立文件夹
/etc/redis 存放Redis的配置文件
/var/redis/端口号 存放Redis的持久化文件
# cd /etc/
# mkdir redis
# mkdir /var/redis
# mkdir /var/redis/6379
复制conf文件
将redis安装目录中的redis.conf复制到/etc/redis中,然后重命名成端口号.conf
# cd /usr/local/redis/
# cp redis.conf /etc/redis/
# cd /etc/redis/
# mv redis.conf 6379.conf
复制初始化脚本
# cd /usr/local/redis/utils/
我们需要配置Redis的运行方式和持久化文件,日志文件存储位置
配置初始化脚本,将脚本复制到/etc/init.d目录,文件名redis_端口号,然后修改文件中的REDISPORT为你需要设置的端口号
# cp redis_init_script /etc/init.d
# cd /etc/init.d/
# mv redis_init_script redis_6379
修改conf文件
我们修改下6379.conf
# cd /etc/redis/
# vim 6379.conf
bind 0.0.0.0 代表所有ip来访问
protected-mode 默认是yes改成no,这是3.2版本后新的特性,链接redis时只能通过本地localhost来链接,不能通过网络ip192.168..来链接,所以要改成no
redis端口号
redis默认不在后台运行,我们修改成yes变成守护进程后台运行
设置Redis的PID文件位置
设置持久化文件存放位置
开启AOF
设置开机启动redis
编辑/etc/init.d/redis_6379文件,在#!/bin/bash 之后添加如下两行。
# vim /etc/init.d/redis_6379
# chkconfig: 2345 10 90
# description: redis_6379 service manage…
将redis_6379放入linux启动管理体系中
# chkconfig –add redis_6379
查看redis_6379服务在各运行级状态
# chkconfig –list redis_6379
启动redis
现在可以使用/etc/init.d/redis_端口号 start来启动redis了
# /etc/init.d/redis_6379 start
关闭redis
# redis-cli SHUTDOWN