在 Plone 站点上调整 PostgreSQL 的 RelStorage 和参数

Tuning RelStorage and parameters of PostgreSQL on Plone site

我多次遇到 POSKeyError 错误。我认为我们的设置是 PostgreSQL 的参数不够。因为系统将存储从 MySQL 更改为 PostgreSQL。我在chenging之前多次报错

请告诉我具体设置或任何要点。

使用版本:

以下是 postgresql.conf 中的一些 PostgreSQL 调整:

# shared_buffers and effective_cache_size should be 30%-50%
# of your machine free memory

shared_buffers = 3GB
effective_cache_size = 2GB
checkpoint_segments = 64
checkpoint_timeout = 1h
max_locks_per_transaction = 512
max_pred_locks_per_transaction = 512

# If you know what you're doing you can uncomment and adjust the following values

#cpu_tuple_cost = 0.0030
#cpu_index_tuple_cost = 0.0001
#cpu_operator_cost = 0.0005

这是 Jens W. Klein 对它们的解释:

  1. 最重要的:shared_buffers = 3GB(将其设置为您的 30%-50% 机器可用内存)
  2. checkpoint_segments = 64,
  3. checkpoint_timeout = 1h(减少日志开销)
  4. max_locks_per_transaction = 512,
  5. max_pred_locks_per_transaction = 512(relstorage 需要很多)
  6. effective_cache_size = 4GB(调整到内存的 ~50%)
  7. 只是为了导入你可以在配置中禁用fsync,然后它应该非常快,但不要关闭机器
  8. CPU 调整。我们没有修改这些的默认值,但是如果你 知道你在做什么,去做吧。下面推荐一些 价值观:
    • cpu_tuple_cost = 0.0030,
    • cpu_index_tuple_cost = 0.001,
    • cpu_operator_cost = 0.0005(查询计划优化,默认值有几年了,所以当前的 cpu 更快,这些是更好的估计,但我不知道如何到达这里 "real"值)

您还应该阅读 https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server

这是我们的 buildout.cfg:

[instance1]
recipe = plone.recipe.zope2instance
rel-storage =
  type postgresql
  host 10.11.12.13
  dbname datafs
  user zope
  password secret
  blob-dir /var/sharedblobstorage/blobs
  blob-cache-size 350MB
  poll-interval 0
  cache-servers 10.11.12.14:11211
  cache-prefix datafs