PostgreSQL服务器配置和客户端验证
服务器配置和操作
管理内核资源
共享内存和信号量
SHMMAX 共享内存段的最大大小(字节)
SHMMIN 共享内存段的最小大小(字节) 最多32个字节。
SHMALL 可用共享内存总量(字节或页数)
SHMSEG 每个进程的最大共享内存段数
SHMMNI 系统范围内的最大共享内存段数
SEMMNI 信号量标识符的最大数量(即集合)
SEMMNS 系统范围内的最大信号量数
SEMMSL 每组的最大信号量数
SEMMAP 信号量映射中的条目数
SEMVMX 信号量的最大值
PostgreSQL每个允许的连接使用一个信号量(max_connections),允许autovacuum工作进程(autovacuum_max_workers)和允许后台进程(max_worker_processes),每组16个.
使用POSIX信号量时,每个允许的连接一个信号量(max_connections),允许的autovacuum worker进程(autovacuum_max_workers)和允许的后台进程(max_worker_processes).
Linux内核资源
默认的最大段大小为32 MB,默认的最大总大小为2097152页。页面几乎总是4096字节.
更改共享内存大小设置
$ sysctl -w kernel.shmmax=17179869184
$ sysctl -w kernel.shmall=4194304
限制过度使用内存
$ sysctl -w vm.overcommit_memory = 2
或者: echo -1000 > /proc/self/oom_score_adj
更改/proc文件系统的内容
$ echo 17179869184 >/proc/sys/kernel/shmmax
$ echo 4194304 >/proc/sys/kernel/shmall
资源限制
有大量的shared_buffers时,使用大页面可以减少使用大量连续内存块时的开销.
估计所需的大页面数量,启动PostgreSQL而不启用大页面,并使用/proc文件系统检查postmaster的匿名共享内存段大小以及系统的大页面大小
控制登录期间设置的各种资源限制: /etc/security/limits.conf
确定内核将支持的最大打开文件数: /proc/sys/fs/file-max
查看postmaster的PID
$ head -1 $PGDATA/postmaster.pid
18635
检查postmaster的VmPeak值:
$ grep ^VmPeak /proc/18635/status
VmPeak: 223160 kB
$ pmap 18635 | awk '/rw-s/ && /zero/ {print $2}'
145064K
系统的大页面大小
$ grep ^Hugepagesize /proc/meminfo
Hugepagesize: 2048 kB
计算并设置大页面大小
计算要使用的大页面大小: 大页面大小=145064/2048
$ sysctl -w vm.nr_hugepages=71 //注意:71是计算出来的大页面大小.
要验证大量的页面分配情况使用
$ grep Huge /proc/meminfo
配置文件开启大页面:
$ vim data/postgresql.conf
huge_pages = on
可能还需要vm.hugetlb_shm_group通过sysctl设置数据库服务器的操作系统用户权限来使用大页面或授予锁定内存的权限ulimit -l.
每日英语6
(Daily English Tips)(6)
What's your phone number?
My phone number is 614-232-6682
Call me.
My name and phone number.
Is it your phone number?
Yes.
Thank you
You're welcome.