Linux系统安装Redis遇到的问题及解决

Redis用处很广泛,我不再详细说了,按照这里的教程在Linux上安装Redis,开始了踩坑过程,网上买了一个Linux CentOS 7.3,某云的,巨坑无比啊, Redis 为4.0。

1.登录云服务并下载安装:

首先登录不是root用户,需要切换下,执行sudo su切为root用户,感觉这样很不方便,于是咨询下,回复是这样的:

Linux系统安装Redis遇到的问题及解决

(1) 然后换回root用户了,开始wget下载,提示没有这个命令,好吧,开始安装它yum -y install wget

下载完后就解压, 执行:tar xzf redis-4.0.9.tar.gz

(2) 进入 cd redis-4.0.9,执行 make,此时有可能报错:

gcc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c  类似的;那么再去安装GCC环境, yum -y install gcc automake autoconf libtool make

 (3)安装成功,开始启动前准备,修改redis.conf里 bind的IP,直接注释掉这一行,让外网可以访问,如果是3.2以后版本,还需要修改保护模式 protected-mode yes 改为no,注意修改完这个配置后,下次启动要指定 redis.conf,不然不起作用!

2.开始启动

如果你linux没什么问题可能就直接启动成功了,但有些时候会报3个警告,比如我就碰到了,2.8不会,4.0会,猜想可能是4.0对内存要求高了

第一个警告:The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

意思是:TCP  backlog设置值,511没有成功,因为 /proc/sys/net/core/somaxconn这个设置的是更小的128.

临时解决方法:(即下次启动还需要修改此值)

echo 511 > /proc/sys/net/core/somaxconn

永久解决方法:(即以后启动还需要修改此值)

将其写入/etc/rc.local文件中。

当然上面这个解决办法是网上的,我试了,直接改somaxconn下次启动仍然这样,而写到rc.local我不知道怎么写,直接写也是没用的,所以我又找到另外一个方法是可以的

在/etc/sysctl.conf中添加如下

net.core.somaxconn = 2048,此值根据你的内存自己写定义,大于511即可

第二个警告:overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to/etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

意思是:overcommit_memory参数设置为0!在内存不足的情况下,后台程序save可能失败。建议在文件 /etc/sysctl.conf 中将overcommit_memory修改为1。

这个警告的处理我忘记了这个是否有效,应该有效的

第三个警告:you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix thisissue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain thesetting after a reboot. Redis must be restarted after THP is disabled.

意思是:你使用的是透明大页,可能导致redis延迟和内存使用问题。执行 echo never > /sys/kernel/mm/transparent_hugepage/enabled 修复该问题。

临时解决方法:

echo never > /sys/kernel/mm/transparent_hugepage/enabled。

永久解决方法:

将其写入/etc/rc.local文件中。

这个解决方案也是网上的,但是根本没用,至少我这里是没用的,所以我采取的是这个,修改etc/default/grub  里值,GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200 transparent_hugepage=never"

在此行后面加了 transparent_hugepage=never,并执行,参考如下

RHEL7.2 禁用透明的大页内存--transparent_hugepage(THP)

[root@rac1 tmp]# cat /etc/RedHat-release
Red Hat Enterprise Linux Server release 7.2 (Maipo)
[root@rac1 tmp]# uname -r
3.10.0-327.el7.x86_64
[root@rac1 tmp]#

[root@rac1 tmp]# cd /etc/default/
[root@rac1 default]# ll
total 12
-rw-r--r--. 1 root root  218 Jun  2 14:04 grub
-rw-r--r--. 1 root root 1756 Aug 14  2015 nss
-rw-r--r--. 1 root root  119 Nov 25  2014 useradd
[root@rac1 default]# cp grub grub.bak ------->>>>备份grub文件
修改/etc/default/grub文件,如下是修改之后的效果:
[root@rac1 default]# cat /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="rhgb quiet transparent_hugepage=never" ---->>> transparent_hugepage=never是新加的
GRUB_DISABLE_RECOVERY="true"
[root@rac1 default]# grub2-mkconfig -o /boot/grub2/grub.cfg ---->>执行该命令
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-3b932bfbe4f94ccf93c11ba19641e845
Found initrd image: /boot/initramfs-0-rescue-3b932bfbe4f94ccf93c11ba19641e845.img
done
[root@rac1 default]# init 6 -------->>>>重启生效

os重启之后,查看效果

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/526025d0c972a40ef17c3af51f4af0e3.html