设置 Postgresql 配置文件中的的 shared_buffers ,提升OE 性能
-
在步科大神的指导下完成的,完成了PG数据库的部分优化......
PG的配置文件是数据库目录下的postgresql.conf文件,8.0以后的版本可支持K,M,G这样的参数,只要修改相应参数后重新启动PG服务就OK了。
effective_cache_size:是postgresql能够使用的最大缓存,这个数字对于独立的pgsql服务器而言应该足够大,比如4G的内存,可以设置为3.5G(437500)
shared_buffers:这是最重要的参数,postgresql通过shared_buffers和内核和磁盘打交道,因此应该尽量大,让更多的数据缓存在shared_buffers中。通常设置为实际RAM的10%是合理的,比如50000(400M) 实际设置到 30-50%都是合适的
但是首先要先设置 Linux 系统 shmmax 的大小,默认是很低的
根据你的内存大小选择合适的
1.
运行命令,看看 shm 有多少
# cat /proc/sys/kernel/shmmax
[attachimg=2]
默认就怎么多了,下面我们来更改
2.
像我的VPS 是2G 的内存,修改如下
#vi /etc/sysctl.conf
在最后,加上以上2行
kernel.shmmax = 1055092736
kernel.shmall = 257591
#sysctl -p
运行以上命令,确认一下参数正确
[attachimg=1]
3.
命令行 查看 postgresql的运行日志
$ tail -f xxx/pgsql/postgresql.log ( xxx 是你绿色版的目录)
[attachimg=3]
再开一个终端,修改 xxx(绿色版路径)/pgsql/date/postgresql.conf 下面的sharedbuffer(用vi 命令也行,直接编辑器编辑也可以)
我改为256MB
shared_buffers = 256MB # min 128kB
重新启动绿色版 OE
可以看到postgresql 启动正常了
[attachimg=4]
-------------------------------------
shmmax 和 shmall 算法如下:
#!/bin/bash
# simple shmsetup script
page_size=getconf PAGE_SIZE
phys_pages=getconf _PHYS_PAGES
shmall=expr $phys_pages / 2
shmmax=expr $shmall \* $page_size
echo kernel.shmmax = $shmmax
echo kernel.shmall = $shmall