基于Redhat Linux安装InterSystems IRIS 的服务器内存相关参数配置建议
注意:下面内存设置数值仅限参考,具体内存数值的设置是否合适,依赖于更多实际使用情况决定。
主要需要设置下面几个内存相关配置:
(下面比例适用于服务器仅运行单实例InterSystems IRIS)
数据库缓存Database cache:
建议小于64G内存设置总内存50%,大于等于64G内存设置70%总内存
程序缓存routine cache:
建议设置1023MB
gmheap:
建议设置1048576KB(1024MB)
LockSize:
建议最少设置134217728 Bytes (128MB),如果在系统日志中提示locksize相关错误或警报,应相应增加。
如果在一台服务器上安装了多个InterSystems IRIS 实例,那么要保证 所有InterSystems IRIS 运行实例的 Shared memory(database cache + routine cache + gmheap) 总值小于 Hugepage设定的值
hugePages :
建议设置值大于系统所有InterSystems IRIS 运行实例的 Shared memory(database cache + routine cache + gmheap) 总值再往上取整+1G。之后监控cache efficiency 调整设置大小。
要注意对于繁忙的系统,需要为除IRIS之外系统预留足够内存。比如主要负责系统集成、使用JavaGateway等会使用多个外部进程,需要为其预留足够内存。
比如要设置Huge pages 大小为12G。
如果Hugepagessize为2048KB,那么设置HugePage_Total=12*1024*1024/2048=6144
echo "vm.nr_hugepages=6144" >> /etc/sysctl.conf
禁用Transparent HugePages (THP)
检查状态
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
或者
# cat /sys/kernel/mm/transparent_hugepage/enabled
设置禁用THP
1. 在/etc/grub.conf文件中添加 transparent_hugepage = never
2. 重启服务器
Kernel shared Memory Limit:
检查该值设置要大于hugePages的值,在/etc/sysctl.conf 文件中查找kernel.shmmax 的内容
swappiness
建议该值设置为5
echo "vm.swappiness=5" >> /etc/sysctl.conf
Dirty Page Cleanup
echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf
echo "vm.dirty_ratio=10" >> /etc/sysctl.conf