Почему 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%"}]