16-linux优化
Aerospike 数据库Linux优化
服务
推荐值 service-threads 取决于aerospike.conf文件中命名空间的配置:
如果任何命名空间已 storage-engine 设置device并 data-in-memory设置为falseor ( data-in-memoryisfalse和 commit-to-device is true),那么建议的值service-threads是每个 CPU/vCPU 至少 3 个,我们建议在这种配置中默认为每个 CPU/vCPU 5 个。 否则storage-engine,要么设置为,要么设置为 pmem并设置为,则推荐 和建议的值 至少为每个 CPU/vCPU 1,这也是此类配置的默认值。memorystorage-enginedevicedata-in-memorytruecommit-to-devicefalseservice-threads 在service-threads服务器启动时检查最佳实践。
内存
我们建议 memory-size 配置的累积总和不要超过机器上的总内存。
在memory-size服务器启动时检查最佳实践。
Linux 最佳
min_free_kbytes
内核参数控制有min_free_kbytes 多少内存应该保持空闲并且不被文件系统缓存占用。通常,内核占用几乎所有带有文件系统缓存的空闲 RAM,并根据需要由进程分配空闲内存。由于 Aerospike 在共享内存(1GB 块)中执行大量分配,默认内核值可能会导致意外的 OOM(内存不足终止)。建议将参数配置为至少 1.1GB,如果使用云供应商驱动程序,最好配置为 1.25GB - 因为这些也可以进行大量分配。这可确保 Linux 始终保持足够的可用内存,并为大量分配提供空闲空间。
检查参数值:
$ cat /proc/sys/vm/min_free_kbytes
如果该值较低,请根据正在运行的内核对其进行相应调整,并在重新启动后保持不变:
echo 3 > /proc/sys/vm/drop_caches
echo 1310720 > /proc/sys/vm/min_free_kbytes
echo "vm.min_free_kbytes=1310720" >> /etc/sysctl.conf
在min_free_kbytes服务器启动时检查最佳实践。
swap关闭
$ echo 0 > /proc/sys/vm/swappiness
$ echo "vm.swappiness=0" >> /etc/sysctl.conf
关闭THP
临时关闭 echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag
创建脚本
cat << 'EOF' >/etc/init.d/disable-transparent-hugepages
#!/bin/bash
### BEGIN INIT INFO
# Provides: disable-transparent-hugepages
# Required-Start: $local_fs
# Required-Stop:
# X-Start-Before: aerospike
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Disable Linux transparent huge pages
# Description: Disable Linux transparent huge pages, to improve
# database performance.
### END INIT INFO
case $1 in
start)
if [ -d /sys/kernel/mm/transparent_hugepage ]; then
thp_path=/sys/kernel/mm/transparent_hugepage
elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
thp_path=/sys/kernel/mm/redhat_transparent_hugepage
else
return 0
fi
echo 'never' > ${thp_path}/enabled
echo 'never' > ${thp_path}/defrag
re='^[0-1]+$'
if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]]
then
echo 0 > ${thp_path}/khugepaged/defrag
else
echo 'no' > ${thp_path}/khugepaged/defrag
fi
unset re
unset thp_path
;;
esac
EOF
赋予执行权
chmod +x /etc/init.d/disable-transparent-hugepages
创建系统执行脚本
cat << 'EOF' > /etc/systemd/system/disable-transparent-huge-pages.service
[Unit]
Description=Disable Transparent Huge Pages
[Service]
Type=oneshot
ExecStart=/bin/bash /etc/init.d/disable-transparent-hugepages start
[Install]
WantedBy=multi-user.target
EOF
启动脚本
systemctl daemon-reload
systemctl enable disable-transparent-huge-pages.service
禁用区域回收
echo 0 > /proc/sys/vm/zone_reclaim_mode cat /proc/sys/vm/zone_reclaim_mode
NVMe SSD优化 做分区
根据Core数以及磁盘块数做分区
文件打开句柄数
系统修改重启生效
vim /etc/security/limits.conf
root soft nofile 200000
root hard nofile 200000
* soft nofile 200000
* hard nofile 200000
临时生效 ulimit -SHn 200000
参考 https://docs.aerospike.com/server/operations/install/linux/bestpractices