参考文档:https://www.postgresql.org/docs/10/static/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT
IPC配置
名称 | 描述 | Postgres值 | 查询方法 |
---|---|---|---|
SHMAX | 共享内存段的最大大小(字节),一般配置为服务器内存的50% | 建议服务器内存的50% | sysctl -a |grep shmmax |
SHMALL | 可用共享内存总量(字节或页面) | SHMMAX/PAGE_SIZE | sysctl -a |grep shmall |
可通过getconf PAGE_SIZE查询PAGE_SIZE大小
以8G内存服务器为例,shmmax设置为允许4G共享内存段
修改当前IPC参数,立即生效,重启后失效
sysctl -w kernel.shmmax=4294967296
sysctl -w kernel.shmall=1048576
设置/etc/sysctl.conf中参数,重启后生效(以以8G内存服务器为例,shmmax设置为允许4G共享内存段为例)
- kernel.shmmax=102410241024*4
- kernel.shmall=kernel.shmmax/PAGE_SIZE
#postgres
kernel.shmmax=4294967296
kernel.shmall=1048576
禁用RemoveIPC
防止用户注销时,操作系统移除该用户所有的共享内存段和信号量
编辑/etc/systemd/logind.conf
RemoveIPC=no
重启服务生效配置
systemctl daemon-reload
systemctl restart systemd-logind
内存设置
设置/etc/sysctl.conf中参数,重启后生效
# 当物理内存耗尽后才使用swap
vm.swappiness = 0
#内存拒绝等于或者大于总可用 swap 大小以及 overcommit_ratio(默认为50)指定的物理 RAM 比例的内存请求
#vm.overcommit_memory = 2
系统限制
可通过命令查询系统当前限制
ulimit -a
其中open files和max user processes值可能过小
修改/etc/systemd/system.conf
DefaultLimitNOFILE=10000
DefaultLimitNPROC=10000
重启系统
Huge Page
优势:
- Page更大(一般页为4K),内存管理更高效
- Huge Page不会被swap,只能存在于内存中