在 Plone 站点上调整 PostgreSQL 的 RelStorage 和参数
Tuning RelStorage and parameters of PostgreSQL on Plone site
我多次遇到 POSKeyError 错误。我认为我们的设置是 PostgreSQL 的参数不够。因为系统将存储从 MySQL 更改为 PostgreSQL。我在chenging之前多次报错
请告诉我具体设置或任何要点。
使用版本:
- 克隆版 4.3.1
- RelStorage 1.5.1 与 RDS、AWS 上的 PostgreSQL
- shared-blob-dir true(存储在文件系统中)
- Plone 快速上传 1.8.2
以下是 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 对它们的解释:
- 最重要的:shared_buffers = 3GB(将其设置为您的 30%-50%
机器可用内存)
- checkpoint_segments = 64,
- checkpoint_timeout = 1h(减少日志开销)
- max_locks_per_transaction = 512,
- max_pred_locks_per_transaction = 512(relstorage 需要很多)
- effective_cache_size = 4GB(调整到内存的 ~50%)
- 只是为了导入你可以在配置中禁用fsync,然后它应该非常快,但不要关闭机器
- 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
我多次遇到 POSKeyError 错误。我认为我们的设置是 PostgreSQL 的参数不够。因为系统将存储从 MySQL 更改为 PostgreSQL。我在chenging之前多次报错
请告诉我具体设置或任何要点。
使用版本:
- 克隆版 4.3.1
- RelStorage 1.5.1 与 RDS、AWS 上的 PostgreSQL
- shared-blob-dir true(存储在文件系统中)
- Plone 快速上传 1.8.2
以下是 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 对它们的解释:
- 最重要的:shared_buffers = 3GB(将其设置为您的 30%-50% 机器可用内存)
- checkpoint_segments = 64,
- checkpoint_timeout = 1h(减少日志开销)
- max_locks_per_transaction = 512,
- max_pred_locks_per_transaction = 512(relstorage 需要很多)
- effective_cache_size = 4GB(调整到内存的 ~50%)
- 只是为了导入你可以在配置中禁用fsync,然后它应该非常快,但不要关闭机器
- 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