os: centos 7.4.1708
epel
# yum install -y centos-release-scl;
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo;
yum clean all ;
yum makecache;
yum
# yum install wget mpstat dstat git iftop sysstat telnet hdparm numactl \
tree curl lrzsz zip unzip dos2unix pigz iputils ntp smartmontools coreutils \
make cmake cmake3 automake autoconf libtool bzip2 unixODBC xfsprogs \
gcc gcc-c++ openssl openssl-devel zlib zlib-devel tcl tcl-devel
rc.local
# ls -l /etc/rc.local
lrwxrwxrwx. 1 root root 13 Apr 28 2019 /etc/rc.local -> rc.d/rc.local
# ls -l /etc/rc.d/rc.local
-rw-r--r--. 1 root root 473 Aug 5 2017 /etc/rc.d/rc.local
# chmod u+x /etc/rc.d/rc.local
# vi /etc/rc.d/rc.local
############################################
#禁用THP
############################################
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
############################################
#设置 io scheduler
############################################
# noop
# deadline
# cfq
############################################
echo deadline > /sys/block/sda/queue/scheduler
sysctl.conf
# vi /etc/sysctl.conf
vm.overcommit_memory = 1
vm.swappiness = 1
net.core.somaxconn = 2048
立即生效
# sysctl -p
limits.conf
# vi /etc/security/limits.conf
* soft nofile 1024000
* hard nofile 1024000
* soft nproc unlimited
* hard nproc unlimited
* soft memlock unlimited
* hard memlock unlimited
* soft core unlimited
* hard core unlimited
* soft stack unlimited
* hard stack unlimited
有个坑需要注意下,里面默认设置了非root用户的最大进程数为4096
# cat /etc/security/limits.d/20-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 4096
root soft nproc unlimited
删除该文件,或者修改 4096 为更大值
# rm /etc/security/limits.d/20-nproc.conf
systemd ulimit
systemd 的资源限制稍有不同,主要是 centos 对 资源限制做了调整。
# man systemd-system.conf
# vi /etc/systemd/system.conf
DefaultLimitNOFILE=1024000
DefaultLimitNPROC=1024000
DefaultLimitMEMLOCK=infinity
DefaultLimitCORE=infinity
DefaultLimitSTACK=infinity
DefaultLimitAS=infinity
DefaultLimitFSIZE=infinity
DefaultLimitSIGPENDING=15708
# systemctl daemon-reload
# systemctl restart sshd.service
# cat /proc/YOUR-PID/limits
selinux disable
# vi /etc/selinux/config
SELINUX=DISABLED
firewalld.service
# systemctl stop firewalld.service;
systemctl disable firewalld.service;
grub
# vi /etc/default/grub
ipv6.disable=1 numa=off transparent_hugepage=never elevator=deadline
# grub2-mkconfig -o /boot/grub2/grub.cfg
numa
确认numa 已经关闭
# grep -i numa /var/log/dmesg
# cat /proc/cmdline
# yum install -y numactl
# numastat
# numactl --hardware
# numactl --show
ruby
redis cluster >= 5.x 时,不需要安装 ruby 环境
redis cluster < 5.x 时,需要安装 ruby 环境
使用 redis-trib.rb 创建 redis cluster 时, 需要ruby >= 2.2.2.
# yum install ruby ruby-devel ruby-libs rubygems rpm-build
# gem install redis
Fetching: redis-4.0.1.gem (100%)
ERROR: Error installing redis:
redis requires Ruby version >= 2.2.2.
默认的centos 7.4 yum源只支持到 ruby 2.0.0。
上面的 yum install 方式就不要执行了,我已经帮大家踩坑了。
参考这篇blog:
https://blog.csdn.net/ctypyb2002/article/details/80982982
# ruby -v
ruby 2.4.4p296 (2018-03-28 revision 63013) [x86_64-linux]
安装 redis 接口
# gem install redis
# gem uninstall redis --version 4.0.2
# gem install redis -v 3.3.3
参考: