优化系统参数
vi /etc/sysctl.conf
echo "kernel.shmmni=4096" >> /etc/sysctl.conf echo "kernel.shmmax=$(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))" >> /etc/sysctl.conf echo "kernel.shmall=$(expr $(getconf _PHYS_PAGES) / 2)" >> /etc/sysctl.conf echo "kernel.sem=500 2048000 200 4096" >> /etc/sysctl.conf echo "fs.aio-max-nr=1048576" >> /etc/sysctl.conf echo "fs.file-max=524288" >> /etc/sysctl.conf echo "vm.swappiness=5" >> /etc/sysctl.conf echo "vm.overcommit_memory=2" >> /etc/sysctl.conf echo "vm.overcommit_ratio=75" >> /etc/sysctl.conf echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf echo "vm.dirty_ratio=40" >> /etc/sysctl.conf echo "vm.dirty_expire_centisecs=500" >> /etc/sysctl.conf echo "vm.dirty_writeback_centisecs=250" >> /etc/sysctl.conf echo "net.core.somaxconn=2000" >> /etc/sysctl.conf echo "net.ipv4.tcp_max_syn_backlog=2000" >> /etc/sysctl.conf echo "net.ipv4.tcp_tw_reuse=1" >> /etc/sysctl.conf echo "net.ipv4.tcp_syn_retries=3" >> /etc/sysctl.conf echo "net.ipv4.tcp_retries2=5" >> /etc/sysctl.conf echo "net.ipv4.tcp_slow_start_after_idle=0" >> /etc/sysctl.conf
设置swap交换区
32GB以下的,swap大小配置和内存一样即可,大于32GB的,最多设置为64GB。
下面的示例将交换区文件创建在/swap,大小为2GB,目的仅用于示例。实际配置请按照上述建议决定交换区大小,并选择合适的磁盘路径来放置交换区文件
dd if=/dev/zero of=/swap bs=1M count=2048 # Swap交换区大小 = 2048MB
mkswap -f /swap
chmod 0600 /swap
swapon /swap
# 设置开机自动启用,修改
/etc/fstab文件,添加如下配置
/swap swap swap defaults 0 0
开启系统hugepages
如果服务器物理内存大于128GB,尤其是达到256GB甚至更高时,强烈建议开启Linux系统的hugepage,同时将大页内存设置为shared_buffers的1.1~1.2倍;如果内存没有这么多,可以不设置hugepages。 # 设置语句,用sudo 设置或root设置 echo "vm.nr_hugepages = 大页页数" >> /etc/sysctl.conf # 不同服务器可能每页大小不一样,可以先用以下命令查看每页大小: cat /proc/meminfo | grep Hugepagesize
计算方法:
大页页数 = (shared_buffers * 1.1~1.2) / hugepage_size ,注意单位换算
运行
sysctl -p使设置生效,生效后可通过
cat /proc/meminfo确认hugepage的配置与使用情况
