我尝试将“shared_buffers”设置的值放大到大于默认值24Mb,并且除了默认值之外,服务器不会以其他值(我尝试过)启动。只创建一个空日志文件。 这是linux服务器上postgresql的干净安装,因此所有其他设置都是默认设置。 有谁知道可能是什么原因。
答案 0 :(得分:1)
它有抱怨吗?检查日志。
如果您更改的唯一内容是shared_buffers,那么您可能已达到操作系统的限制,在这种情况下,它会在日志中告诉您。
如果是这种情况,请查看http://www.postgresql.org/docs/8.3/interactive/kernel-resources.html#SYSVIPC如何将其设置为正确的值。
更新
许多其他参数取决于shared_buffers
,但并非相反,因此您无需更改任何其他参数。
但是,仅仅因为服务器具有32GB的RAM并不意味着操作系统允许您使用它。
您必须确保sysctl -a | grep kernel.shmmax
的输出高于您设置shared_buffers
的值。
无论你改变价值多少,它是否会停止工作,或者如果你只是添加,比如1MB,它是否会起作用?
另外,正如约翰所说,8.2中引入了对命名值的支持,因此如果您之前使用的是版本,则必须以块而不是内存来指定它。
另一件事。它可能对语义非常挑剔。因此,请确保您已写入 MB 而不是Mb或mb。
然而奇怪的是,您只获得一个空的日志文件,尝试通过按照John建议的方式手动启动该过程,或者使用更简单的pg_ctl start
作为用户postgres(只要是静默模式)未启用,它仍会输出到您的终端)
答案 1 :(得分:1)
您可能已达到kernel.shmmax限制。用
将其设置得更高sysctl -w kernel.shmmax=xxxx
要在引导之间保持这种状态,请在kernel.shmmax
添加/etc/sysctl.conf
条目。
答案 2 :(得分:0)
这是什么版本的PostgreSQL?我使用旧版PostgreSQL的“Mb”语法遇到了问题(它在8.1上没有用,但它适用于8.3)。
我发现如果我手动启动postmaster进程,而不是使用init.d脚本,我会看到错误消息打印到控制台。通常你必须在你的机器上进入postgres帐户,启动postmaster二进制文件,在Ubuntu上是/usr/lib/postgresql/8.4/bin/postmaster
(根据你的PostgreSQL和发行版进行更改)。我的钱是你会看到与Jimmy所描述的相关的错误。