Tom*_*iss 12 postgresql performance configuration performance-tuning
我们使用 CentOS 6.6 版,PostgreSQL 8.4.20 版。(是的,这不是最前沿的。)
在postgresql.conf,我们有:
shared_buffers = 4096MB
Run Code Online (Sandbox Code Playgroud)
内核 shm 值设置得很好且很高:
[root@green data]# sysctl -a | grep shm
kernel.shmmax = 15922077696
kernel.shmall = 3887226
kernel.shmmni = 4096
kernel.shm_rmid_forced = 0
Run Code Online (Sandbox Code Playgroud)
我们有足够的内存:
[root@green data]# free
total used free shared buffers cached
Mem: 31097812 30474972 622840 2873672 1961088 20565360
-/+ buffers/cache: 7948524 23149288
Swap: 1959920 93852 1866068
Run Code Online (Sandbox Code Playgroud)
然而,shared_buffersreported by的值pg_settings只有 512MB,而不是 4GB 中设置的postgresql.conf:
postgres=# select name, setting, min_val, max_val, context from
pg_settings where name='shared_buffers';
name | setting | min_val | max_val | context
----------------+---------+---------+------------+------------
shared_buffers | 524288 | 16 | 1073741823 | postmaster
Run Code Online (Sandbox Code Playgroud)
是的,我们已经完全重新启动,并SHOW config_file确认我已经编辑了正确的postgresql.conf.
我非常感谢任何能够洞察这个谜团的人。
Dan*_*ité 15
的规范单位shared_buffers是 的页数8kB,因此以字节为单位分配的实际内存为:
524288* 8192=4294967296或4096*1024*1024按要求。
您还可以使用以下命令检查内存段的大小 ipcs -m
什么@Daniel解释说,当你添加相应的列到你的查询,以便准确地变得相当明显:
SELECT name, setting, unit, min_val, max_val, context
FROM pg_settings WHERE name = 'shared_buffers';Run Code Online (Sandbox Code Playgroud)
要不就:
SELECT * FROM pg_settings WHERE name = 'shared_buffers';
Run Code Online (Sandbox Code Playgroud)
考虑您的“非流血边缘”(又名过时和不受支持)Postgres 版本的项目指南。
| 归档时间: |
|
| 查看次数: |
22302 次 |
| 最近记录: |