PostgreSQL性能-调整SHMMAX和SHMALL


9

我已经阅读了几乎所有有关提高postgres性能的在线信息,但是SHMMAX和SHMALL的“正确”价值仍然使我难以理解。

共识似乎是SHMMAX = total_memory / 4和SHMALL = total_memory / 2是安全的起始值。

但是,SHMALL可以用页面或字节来度量,我找不到有关在Ubuntu上使用的信息。

Ubuntu(或更常见的Debian)是否将页面或字节用于SHMALL?

Answers:


11

对于我使用的所有Linux系统,SHMALL以页SHMMAX为单位,以字节为单位。我认为您可以使用ipcs命令检查系统,该命令在输出时总是将上述参数转换为千字节,并将其与sysctl值进行比较:

[aseryozhin@centos ~]$ ipcs -l

------ Shared Memory Limits --------
max number of segments = 4096               // SHMMNI   
max seg size (kbytes) = 524288              // SHMMAX
max total shared memory (kbytes) = 8388608  // SHMALL
min seg size (bytes) = 1

[aseryozhin@centos ~]$ sysctl -e kernel.shmmax
kernel.shmmax = 536870912

[aseryozhin@centos ~]$ sysctl -e kernel.shmall
kernel.shmall = 2097152

[aseryozhin@centos ~]$ getconf PAGE_SIZE
4096

SHMMAX:524288 * 1024 = 536870912

SHMALL:8388608 * 1024/4096 = 2097152


2

如文档中所述,这些变量以字节为单位。我认为查看postgresql配置参数更为重要。您需要在需要时查看SHMALL / SHMMAX值。例如,如果要增加最大连接数,则可能需要增加这些限制。

调整数据库服务器取决于您的使用模式,例如并发连接数和数据库大小。增加配置参数并不总是很好。


2
需要增加SHMMAX来增加shared_buffers,这是谈到postgresql性能时最低的结果。您可以添加文档链接吗?
恩里科

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.