3

我多次收到 POSKeyError 错误。我认为我们设置的 PostgreSQL 参数不够。因为系统将存储从 MySQL 转换为 PostgreSQL。在 chenging 之前,我多次收到错误。

请让我知道具体设置或任何要点。

使用版本:

  • 克隆 4.3.1
  • 在 RDS、AWS 上使用 PostgreSQL 的 RelStorage 1.5.1
  • shared-blob-dir true(存储在文件系统上)
  • 克隆快速上传 1.8.2
4

1 回答 1

4

以下是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 更快,这些是更好的估计,但我不知道如何获得这里的“真实”值)

您还应该阅读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
于 2015-11-24T08:01:58.237 回答