我在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个连接?
答案 0 :(得分:1)
听起来你可能超过共享内存的极低默认限制。
本手册对此进行了介绍 - 请参阅operating system resource limits。对于Linux,请参阅kernel.shmmax
。
另一方面,增加max_connections
通常是错误的答案。大多数PostgreSQL实例在相对较少的主动工作连接中效果最佳。通常最好使用连接池来排队工作;通过较少的资源使用,您将获得更好的整体吞吐量。如果您的应用程序没有内置连接池,则可以将PgBouncer用作外部连接池。