操作系统优化
操作系统优化主要从共享内存、参数设置、使用大页、信号量和Limit参数等方面阐述。
(一)共享内存
当用户使用PostgreSQL 9.3或GreenPlum5及以前的版本,为防止数据库使用Swap,需先设置下面两个参数:
Ø kernel.shmmax = 16724692992
Ø kernel.shmall = 4083177
从PostgreSQL 9.3开始,数据库不再大量使用Sysv类型的共享内存,主要使用MMAP类型的共享内存,因此上面两个参数设置一个较小的值,数据库也可以启动。
(二)参数设置
1. vm.swappiness=0
在数据库中需尽量避免使用Swap,因此将该参数值设置为0。
2. Overcommit参数
通常情况下设置vm.overcommit_memory=2,即不让系统超申请。通常情况下该值为0,表示申请的内存可以超过物理机内存。当大家都开始使用的时候,则会发生OOM,将一些进程给Cut掉,这在数据库中是比较危险的情况,因此建议将vm.overcommit_memory设为2。
除此之外,需要设置vm.overcommit_ratio= 90,需要根据实际情况设置。
当设置完这两个值后,可以申请的内存不超过:
swap的大小 + 物理内存* vm.overcommit_ratio
例如:一个256G内存的机器,16G Swap,应该把vm.overcommit_ratio= 93,这样256*95%+16=254G,内存申请不可超过254G,如果超过的话则申请失败。