PostgreSQL--信号量和shmall 和 shmmax相关设置
2017-12-12 19:48
246 查看
一、shared_buffers与shmmax,shmall,max_connections的关系
1.1、shared_buffers与max_connections的关系
shared_buffers 是查询缓存,设置比较大可以提高PostgreSQL的效率,一般建议设置为系统内存的3/4,但是必须不少于128KB,并且不少于16KB乘以max_connections1.2、shared_buffers与shmmax,shmall的关系
shared_buffers该参数不能超过由操作系统参数SHMMAX指定的值内核的 shmall 和 shmmax 参数设置在/etc/sysctl.conf文件中,通过sysctl -p 可以生效
SHMMAX= 配置了最大的内存segment的大小 ------>这个设置的比SGA_MAX_SIZE大比较好。
SHMMIN= 最小的内存segment的大小
SHMMNI= 整个系统的内存segment的总个数
SHMSEG= 每个进程可以使用的内存segment的最大个数
shmall 是全部允许使用的共享内存大小,shmmax 是单个段允许使用的大小。这两个可以设置为内存的 90%。例如 16G 内存,1610241024102490% = 15461882265,shmall 的大小为 15461882265/4k(getconf PAGESIZE可得到) = 3774873。
修改 /etc/sysctl.conf
kernel.shmmax=15461882265
kernel.shmall=3774873
kernel.msgmax=65535
kernel.msgmnb=65535
执行 sudo sysctl -p
可以使用 ipcs -l 看结果。ipcs -u 可以看到实际使用的情况
备注:shmmax & shmall 在PostgreSQL9.3开始,将共享内存从system V 修改为Posix和mmap方式,不再需要设置linux系统的shmmax参数
二、max_connections与信号量的关系
如果max_connections设置太大,信号量被消耗完毕,有可能会导致PostgreSQL无法启动2.1、信号量设置
信号量控制设置在/etc/sysctl.conf文件中,通过sysctl -p 可以生效,该文件用于控制内核信号量,信号量是System VIPC用于进程间通讯的方法。kernel.sem = 250 512000 100 2048
2.2、查询当前信号量使用情况
查看当前信号量使用情况2.3、查看当前的设置:
cat /proc/sys/kernel/sem这四个数字分别是:SEMMSL,SEMMNS,SEMOPM,SEMMNI
SEMMSL:内核参数,控制每个信号量集合的最大信号数。
SEMMNS:内核参数,控制系统范围内能使用的最大信号量数。
SEMOPM:semop()函数(内核函数,用来操作信号量)每次调用锁能操作的一个信号量集中的最大信号量。
SEMMNI:内核中信号量集的最大数量。
SEMMNS=SEMMSL*SEMMNI
SEMOPM=SEMMSL,这两个参数一般设置为相同。
2.4、信号量设置计算
对于PostgreSQL数据库来说:SEMMNI >= ceil((max_connections + autovacuum_max_workers + 4) / 16)
SEMMSL >= 17
假设一个PG库如下设置:
max_connections=1000, autovacuum_max_workers =3,
则这几个参数的设置是:
SEMMNI = ceil((1000+3+4))/16)=63,因为考虑到其他进程使用,一般设置为63+25=88
SEMMSL要求大于17,保持默认250
SEMOPM=SEMSL=250
SEMMNS=SEMMNIMSMMSL=88250=22000
在/etc/sysctl.conf文件中添加:
kernel.sem=250 22000 250 88 运行:sysctl -p 生效
使配置生效
设置完成之后,如果启动数据库还是报同样的错误,那么可以重启操作系统再试试。
相关文章推荐
- 安装Oracle时,shmall、shmmax、kernel.sem的设置
- Postgresql相关的内存设置参数
- (2012.04.13)动态链接库、静态库区别与VS2005项目相关设置
- 在Django上设置postgresql和运行代码
- 最适合初学者的 IntelliJ IDEA 教程 (1) - HelloWorld 和相关设置
- 设置相关:版本号,清除缓存
- IOS设置项相关----Preferences and Settings Programming Guide
- Android PopupWindow 相关设置
- AS3 中Label相关属性的设置
- 系统初始化相关设置(看门狗、irq、LVD、MCLK)
- zend studio 9 字体,颜色,快捷键等相关设置
- linux静态IP相关设置
- 星外ASP.Net的安全设置相关说明
- PostgreSQL服务端监听设置及client连接方法
- PostgreSQL启动过程中的那些事七:初始化共享内存和信号十九:shmem中初始化BTree相关结构
- plsql 相关设置
- 【转自谭峰】PostgreSQL9.5:新增参数设置神器:pg_file_settings 视图
- ubuntu下DNS原理及相关设置
- PostgreSQL分区表相关