1. 操作系统依赖
以下安装内容以Centos7为例。
1.1 操作系统参数
1、 net.core.somaxconn = 65535
当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。可以按自身情况调整,理论最大值是262144,但也有服务不能大于65536。
/etc/sysctl.conf,修改或添加如下
net.core.somaxconn = 65535
在终端中执行:
sysctl -p
2、 vm.overcommit_memory = 1
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最高)。
overcommit_memory(内核参数 内存分配策略)
可选值:0、1、2。
0,表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程
1,表示内核允许分配所有的物理内存,而不管当前的内存状态如何
2,表示内核允许分配超过所有物理内存和交换空间总和的内存
当redis启动时,会有一条警告“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”。
即警告超委托内存设置为0!后台保存可能在低内存条件下失败。
/etc/sysctl.conf,修改或添加如下
vm.overcommit_memory = 1
在终端中执行:
sysctl -p
3、 关闭THP
当redis启动时,会有一条警告“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”。
内核启用THP可能会导致内存使用问题
将如下代码追加到 /etc/rc.local 文件中:
if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
fi
设置完成后重启。
1.2 在线安装依赖
生产环境,建议安装本地yum源
yum -y installgcc
yum -y installgcc-c++
yum -y install jemalloc
yum -y install tcl
1.3 离线安装依赖
需要下载gcc、gcc-c++、jemalloc、tcl,依赖包比较多,方式也多样化,可以源码安装,也可以rpm安装等等,以下提供rpm的安装方式。
下载rpm的地址比较多,以下是其中之一。
https://centos.pkgs.org/7/centos-x86_64/
此地址可进行搜索、下载,且可以表示出相应的依赖包。
下载完成所有的rpm包以后,放到任意目录,执行下如命令:
rpm -Uvh *.rpm
以上命令可以解决安装顺序问题。
以下提供一个下载好的centos7的百度云盘地址:
链接:https://pan.baidu.com/s/1KIgX5dyK-N8lfeyFwGmSfg
提取码:i6yl