设为首页 收藏本站
查看: 774|回复: 0

[经验分享] 【安装】REDIS-4.0.0 on CentOS 6.8

[复制链接]

尚未签到

发表于 2017-12-21 07:49:30 | 显示全部楼层 |阅读模式
  1、获取redis-4.0.0源代码
  

[thomaschen@localhost Downloads]$ curl -o redis-4.0.0.tar.gz http://download.redis.io/releases/redis-4.0.0.tar.gz  

  2、解压源代码
  

[thomaschen@localhost Downloads]$ tar -zxvf redis-4.0.0.tar.gz  

  3、编译和安装redis
  

[thomaschen@localhost Downloads]$ su  
Password:
  
[iyunv@localhost Downloads]$cd redis-4.0.0 & make
  
[iyunv@localhost redis-4.0.0]# cd src && make install PREFIX=/usr/local/redis
  

  

  4. 复制默认配置文件
  

[iyunv@localhost redis-4.0.0]# mkdir -p /usr/local/redis/conf  
[iyunv@localhost redis
-4.0.0]# cp redis.conf /usr/local/redis/conf  

  5. 启动redis
  

[iyunv@localhost redis-4.0.0]# cd /usr/local/redis  
[iyunv@localhost redis]# bin
/redis-server ./conf/redis.conf  

12708:C 19 Jul 02:37:37.935 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo  

12708:C 19 Jul 02:37:37.935 # Redis version=4.0.0, bits=64, commit=00000000, modified=0, pid=12708, just started  

12708:C 19 Jul 02:37:37.935 # Configuration loaded  

12708:M 19 Jul 02:37:37.936 * Increased maximum number of open files to 10032 (it was originally set to 1024).  _._
  _.
-``__ ''-._  _.
-``    `.  `_.  ''-._           Redis 4.0.0 (00000000/0) 64 bit  .
-`` .-```.  ```\/    _.,_ ''-._  (   
'      ,       .-`  | `,    )     Running in standalone mode  |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
  |    `-._   `._    /     _.-'    |     PID: 12708
  `-._    `-._  `-./  _.-'    _.-'
  |`-._`-._    `-.__.-'    _.-'_.-'|
  |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
  
|`-._`-._    `-.__.-'    _.-'_.-'|
  |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
  
      `-._    `-.__.-'    _.-'
  `-._        _.-'
  
              `-.__.-'
  

  
12708:M 19 Jul 02:37:37.938 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
  
12708:M 19 Jul 02:37:37.938 # Server initialized
  
12708:M 19 Jul 02:37:37.938 # WARNING 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.
  
12708:M 19 Jul 02:37:37.938 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue 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 the setting after a reboot. Redis must be restarted after THP is disabled.
  
12708:M 19 Jul 02:37:37.938 * DB loaded from disk: 0.000 seconds
  
12708:M 19 Jul 02:37:37.938 * Ready to accept connections
  

  5.WARNING FIX
  从上面redis启动之后的控制台打出的信息来看,有3条WARNING信息。他们分别如下:
  5.1. WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
  解决方式:
  

第一种:无需重启系统即可生效;但重启以后信息丢失  
[iyunv@localhost ~]# echo 511 >/proc/sys/net/core/somaxconn
  

  
第二种:即可生效,重启不会丢失
  
1. 编辑/etc/sysctl.conf文件,在其后追加
  
net.core.somaxconn = 511
  

  
2. sysctl.conf生效
  
[iyunv@localhost ~]# sysctl -p
  

  

  原理:
  对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后,  我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了.每一个处于监听(Listen)状态的端口,都有自己的监听队列.监听队列的长度,与如下两方面有关:一个是 somaxconn参数;另一个是使用该端口的程序中listen()函数.故而somaxconn会限制了接收新 TCP 连接侦听队列的大小。对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了。大多数环境这个值建议增加到 1024 或者更多。 服务进程会自己限制侦听队列的大小,常常在它们的配置文件中有设置队列大小的选项。大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助。
  redis配置文件中有个参数,tcp-backlog默认值是511,而系统默认的somaxconn是128,所以redis启动以后报出这个warnning
  5.2. WARNING 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.
  解决办法:
  

第一种:无需重启系统即可生效;但重启以后信息丢失  
[iyunv@localhost
~]# echo 1 > /proc/sys/vm/overcommit_memory  

  
第二种:即可生效,重启不会丢失
  

1. 编辑/etc/sysctl.conf文件,在其后追加  
vm.overcommit_memory
=1  

  
2. sysctl.conf生效
  
[iyunv@localhost ~]# sysctl -p
  

  原理
  内核参数overcommit_memory 确定了内存分配策略,可选值为[0、1、2]
  0: 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
  1: 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
  2: 表示内核允许分配超过所有物理内存和交换空间总和的内存
  进程通常调用malloc()函数来请求分配内存,Linux支持超量分配内存,以允许分配比可用RAM加上交换内存的请求。Linux对大部分申请内存的请求都回复"yes",以便能跑更多更大的程序。因为申请内存后,并不会马上使用内存。这种技术叫做Overcommit。当linux发现内存不足时,会发生OOM killer(OOM=out-of-memory)。它会选择杀死一些进程(用户态进程,不是内核线程),以便释放内存。当oom-killer发生时,linux会选择杀死哪些进程?选择进程的函数是oom_badness函数(在mm/oom_kill.c中),该函数会计算每个进程的点数(0~1000)。点数越高,这个进程越有可能被杀死。每个进程的点数跟oom_score_adj有关,而且oom_score_adj可以被设置(-1000最低,1000最高)。
  5.3. WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue 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 the setting after a reboot. Redis must be restarted after THP is disabled.
  解决办法
  

第一种方法:重启生效,不会丢失  

1. 编辑/etc/rc.local,在最后新增如下内容:  

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then  echo never > /sys/kernel/mm/transparent_hugepage/enabled
  
fi
  
2. 重新启动系统
  
[iyunv@localhost redis]# reboot
  

  
第二种方法:及时生效,重启丢失
  
[iyunv@localhost redis]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
  

  原理
  正常来说,有两种方式来增加内存,可以管理的内存大小:
  1.增大硬件内存管理单元的大小。
  2.增大page的大小。
  第一个方法不是很现实,现代的硬件内存管理单元最多只支持数百到上千的page表记录,并且,对于数百万page表记录的维护算法必将与目前的数百条记录的维护算法大不相同才能保证性能,目前的解决办法是,如果一个程序所需内存page数量超过了内存管理单元的处理大小,操作系统会采用软件管理的内存管理单元,但这会使程序运行的速度变慢。
  从redhat 6(centos,sl,ol)开始,操作系统开始支持 Huge Pages,也就是大页。简单来说, Huge Pages就是大小为2M到1GB的内存page,主要用于管理数千兆的内存,比如1GB的page对于1TB的内存来说是相对比较合适的。
  THP(Transparent Huge Pages)是一个使管理Huge Pages自动化的抽象层。目前需要注意的是,由于实现方式问题,THP会造成内存锁影响性能,尤其是在程序不是专门为大内内存页开发的时候,简单介绍如下:操作系统后台有一个叫做khugepaged的进程,它会一直扫描所有进程占用的内存,在可能的情况下会把4kpage交换为Huge Pages,在这个过程中,对于操作的内存的各种分配活动都需要各种内存锁,直接影响程序的内存访问性能,并且,这个过程对于应用是透明的,在应用层面不可控制,对于专门为4k page优化的程序来说,可能会造成随机的性能下降现象。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-426318-1-1.html 上篇帖子: spring+redis 集群下的操作 下篇帖子: Redis-port安装使用实现redis迁移codis,以及简单redis pipe实现将mysql迁移redis
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表