參考文檔: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,只能存在於內存中