Почему CouchDBs _dbs.couch продолжает расти при очистке / сжатии БД?

Настройка:

  • CouchDB 2.0 работает в Docker на Raspberry PI 3
  • Узел-приложение, которое использует pouchdb, также в Docker на том же PI 3

Сценарий:

  • В любой момент времени CouchDB имеет максимум 4 базы данных с общим количеством документов около 60
  • приложение узла очищает (используя pouchdbs destroy) и периодически воссоздает эти базы данных (некоторые из них каждые две секунды, другие каждые 15 минут)
  • Базы данных всегда воссоздаются с самыми новыми записями
  • Причина удаления баз данных вместо удаления их документов заключается в том, что в противном случае у меня было бы огромное количество удаленных документов, и мой веб-клиент не может обработать синхронизацию всех этих удаленных документов.

Эта проблема:

Файл var/lib/couchdb/_dbs.couch всегда растет, никогда не сжимается. В прошлый раз я оставил его в покое на три недели, и он вырос до 37 ГБ. Fauxten показал, что CouchDB содержит только до 60 документов, но этот файл продолжает расти, пока не заполнит все доступное пространство

Что я попробовал:

  • все работает на машине x86 (osx)
  • запуск couchdb без докера (из-за этой информации)
  • используя couchdb 2.1
  • запуск сжатия вручную (который ничего не делал)
  • прибегая к помощи около 3 дней

Что бы я ни делал, я всегда получал один и тот же результат: _dbs.couch продолжает расти. Я также не смог выяснить, какова цель этих файлов. Поиск в этом конкретном имени файла дает только две страницы результатов поиска, ни одна из которых не является конкретной.

Единственное, что я могу сейчас сделать, - это время от времени вручную удалять этот файл и перезапускать docker-контейнер, который действительно удаляет все мои базы данных, но это не проблема, поскольку приложение-приложение узла вскоре воссоздает их.

1 ответ

Решение

База данных _dbs является мета-базой данных. Он записывает расположение всех сегментов ваших кластерных баз данных, но, поскольку это тоже база данных couchdb (хотя и не сегментированная), она также требует время от времени сжатия.

пытаться; curl localhost:5986/_dbs/_compact -XPOST -Hcontent-type:application/json

Вы можете включить демон сжатия, чтобы сделать это за вас, и мы включили его по умолчанию в последнем выпуске 2.1.0.

добавьте это в конец вашего файла local.ini и перезапустите couchdb;

[compactions] _default = [{db_fragmentation, "70%"}, {view_fragmentation, "60%"}]

Другие вопросы по тегам