更改max_connections或shared_buffers后,Postgresql不会重新启动

时间:2013-04-11 08:45:01

标签: postgresql postgresql-9.1

我在postgres.config上测试了pgtune,所以我知道我可以在那里更改,但是当我尝试更改max_connections或shared_buffers时,我无法重启postgres。我刚收到错误,但日志中没有任何内容指定错误。 (不确定这些日志的去向,但它们不在常规的pg_log目录中。)

我的设置是:

shared_buffers = 24MB  # (pgtune wizard 2013-04-11 = 120MB)
max_connections = 120  # (pgtune wizard 2013-04-11 = 200)

我在512 linode上只运行postgresql。如果我将shared_buffers更改为超过24MB或max_connections超过120,我就无法重新启动postgres。

我在使用Ubuntu 12.04.2 LTS的Linode xen实例上运行:

Ubuntu 12.04.2 LTS (GNU/Linux 3.8.4-x86_64-linode31 x86_64)

任何人都知道postgres是否自行确定我的系统最多24MB和120个连接?

1 个答案:

答案 0 :(得分:1)

听起来你可能超过共享内存的极低默认限制。

本手册对此进行了介绍 - 请参阅operating system resource limits。对于Linux,请参阅kernel.shmmax

另一方面,增加max_connections通常是错误的答案。大多数PostgreSQL实例在相对较少的主动工作连接中效果最佳。通常最好使用连接池来排队工作;通过较少的资源使用,您将获得更好的整体吞吐量。如果您的应用程序没有内置连接池,则可以将PgBouncer用作外部连接池。