Более интерактивная упаковка ZODB


Текущее управление ЗМИ "обновления базы данных" функциональность грубовато.

1) Можно ли иметь какой-то индикатор прогресса для веб-интерфейса? Например, один говорит, сколько минут / часов осталось, давая хотя бы какую-то оценку

2) как упаковка ZODB влияет на отзывчивость сайта? Блокируются ли все транзакции?

3) какие-либо сценарии командной строки с индикатором прогресса доступны, чтобы вы могли сделать это из клиента командной строки ZEO?

4) на по крайней мере, какие-то маркеры журнала для выхода из системы... [Информация] 30% сделано... 3: 15 идти

4 5

4 ответа:

Анатомия Упаковки

Zodb FileStorage packing - это процесс выборочного копирования данных из одного файла в другой (только те транзакции, которые "моложе" указанного возраста). Прежде чем это копирование начнется, в память встроен некоторый софт индекса, чтобы помочь в процессе. Таким образом, вся упаковка ZODB содержит следующие шаги:

  1. индекс строительного пакета
  2. копирование транзакций во временный файл
  3. добавление операций, выполненных после упаковки начато
  4. замена исходного хранилища файлов на упакованное и повторное открытие его в режиме чтения / записи

Обычно я контролирую процесс с помощью комбинации top, vmstat/dstat, watch ls -la var/filestorage.

Как упоминал Гейр, вы можете иметь отдельный клиент ZEO, посвященный упаковке. Это было разумно, поскольку поток, который вы вызывали, упаковывался от заблокированного до упакованного законченного. Теперь в этом нет необходимости, если вы используете ZEO. ZEO server предоставляет zeopack утилиту, которая подключается непосредственно к ZEO (нет необходимости выделенный клиент ZEO)и инициирует упаковку FileStorage. Одним из преимуществ является отсутствие необходимости в пароле, просто соответствующие разрешения для доступа к сокету управления ZEO.

Ход упаковки

Поскольку упаковка выполняется сервером ZEO (даже не сервером, а самим хранилищем файлов), возможность правильной передачи прогресса клиенту ZEO ограничена. Протокол ZEO не был предназначен для передачи такого рода информации.

ИМХО FileStorage сам по себе может быть более подробным в общении через файл журнала, что он делает прямо сейчас. Можно было бы добиться хоть какого-то прогресса. И если вы чувствуете, что вам нужен индикатор прогресса, то вы можете создать какой-то канал обратной связи через модуль регистрации обратно в ZEO-client/Zope-instance для передачи обратно в браузер.

Производительность при упаковке

Поскольку упаковка FileStorage является достаточно интенсивной дисковой операцией, она уменьшает сквозной выход дисковой подсистемы. Кроме того, он удаляет дисковый кэш (в случае более крупного хранилища файлов), это влияет на производительность диска даже после завершения упаковки, так как кэши должны быть снова разогреты. Возможные улучшения, которые приводят к более длительному времени упаковки, но меньшему влиянию на систему в FileStorage:

  • возврат к операциям O_DIRECT (не касаться кэша файлов)
  • уменьшение приоритета планирования диска (ionice в Linux) для потока, выполняющего упаковку
  • дросселирующая скорость упаковки

Рекомендуемый способ выполнения упаковки для больших сайтов-это запустить ее на отдельном экземпляре ZEO, предназначенном для таких задач , а это вовсе не прослушивание http-запросов.

Это также устранит необходимость в любом из запрошенных признаков.

Это не вопрос, а запрос функции. Он должен быть либо введен в http://plone.uservoice.com/ или даже лучше в https://bugs.launchpad.net/zope2 поскольку ZMI является специфической особенностью Zope 2.

1) такого индикатора нет, и его, возможно, будет трудно реализовать (я хотел бы видеть хотя бы какой-то индикатор прогресса через систему регистрации Zope)

2) не заблокирован, но в зависимости от фазы упаковки вы можете увидеть высокую загрузку ввода-вывода и процессора

3) Нет

4) Нет