Centos7.X 安装redis 并使用systemctl启动

1,cd redi-4.0.9 && make 2,make install PREFIX=/webdata/opt/local/redis  #安装之前可以使用make test 做下测试 3,设置下环境变量 /etc/sysctl.conf 中增加 net.core.somaxconn...

1,cd redi-4.0.9 && make

2,make install PREFIX=/webdata/opt/local/redis  #安装之前可以使用make test 做下测试

3,设置下环境变量

/etc/sysctl.conf 中增加

net.core.somaxconn = 1024

原理:

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

redis配置文件中有个参数,tcp-backlog默认值是511,而系统默认的somaxconn是128,所以redis启动以后报出这个warnning

vm.overcommit_memory=1

原理

内核参数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最高)。

  然后 sysctl -p

最后还要禁用透明大页

echo  'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >>/etc/rc.local


4,redis systemd脚本如下:


[Unit]

Description=Redis

After=network.target

[Service]

ExecStart=/webdata/opt/local/redis/bin/redis-server /webdata/opt/local/redis/conf/redis.conf  --daemonize no

ExecStop=/webdata/opt/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown

[Install]

WantedBy=multi-user.target


  • 发表于 2018-04-01 17:27
  • 阅读 ( 51 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
石天
石天

437 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章