Настройка RelStorage и параметров PostgreSQL на сайте Plone
Я много раз получал ошибку POSKeyError. Я думаю, что нашей настройке недостаточно параметров PostgreSQL. Потому что система изменила хранилище от MySQL до PostgreSQL. Я получил ошибку много раз перед ченгингом.
Пожалуйста, дайте мне знать конкретные настройки или любые моменты.
Используя версию:
- Plone 4.3.1
- RelStorage 1.5.1 с PostgreSQL на RDS, AWS
- shared-blob-dir true (хранится в файловой системе)
- Plone Quick Upload 1.8.2
1 ответ
Решение
Вот некоторые настройки PostgreSQL в postgresql.conf:
# 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
И вот они объяснили Йенс В. Кляйн:
- самое важное: shared_buffers = 3 ГБ (установите 30%-50% свободной памяти вашей машины)
- checkpoint_segments = 64,
- checkpoint_timeout = 1 ч (уменьшает затраты на регистрацию)
- max_locks_per_transaction = 512,
- max_pred_locks_per_transaction = 512 (для relstorage их много)
- ffective_cache_size = 4 ГБ (отрегулируйте до ~50% вашей памяти)
- просто для импорта вы можете отключить fsync в конфиге, тогда это должно быть очень быстро, но не выключайте машину
- Твики процессора. Мы не трогали значения по умолчанию для них, но если вы знаете, что делаете, сделайте это. Ниже приведены некоторые рекомендуемые значения:
- cpu_tuple_cost = 0,0030,
- cpu_index_tuple_cost = 0,001,
- cpu_operator_cost = 0.0005 (оптимизация планирования запросов, значения по умолчанию - несколько лет, поэтому текущий процессор быстрее, это более точные оценки, но я не знаю, как получить здесь "реальные" значения)
Вам также следует прочитать 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