SOLR - старые журналы транзакций (tlogs) никогда не удаляются

во-первых, я долго искал, но нашел решение, поэтому я не пытаюсь решить свою конкретную проблему, стараясь быть кратким:

  • Solr-спецификация 4.0.0.2012.10.06.03.04.33

  • один хозяин, три раба

  • около 70 000 документов в индексе

  • master запускается для полного импорта / создания полного нового индекса ~ один раз в день

  • параметры командной строки для триггера: ?command=full-import&verbose=false&clean=false&commit=true&optimize=true

  • ведомые устройства запускают мастер для нового индекса, если GEN увеличивается (полный импорт + жесткая фиксация, как уже упоминалось), они извлекают новый индекс

  • автокоммит/автософткоммит не настроен

проблема в том, что каждая жесткая фиксация индекса (~ 670 МБ) записывается на диск один раз в день, но старый никогда не удаляется. Насколько я понимаю, solr хранит достаточно tlog, чтобы иметь возможность восстановить последние 100 изменений в документах, я прав?

В моей настройке я уверен, что каждый день изменяются не менее 100 документов (или наборов данных в исходной базе данных), поэтому я не понимаю, почему solr никогда не удаляет старые tlog.

Я был бы рад, если бы кто-то мог указать правильное направление, в настоящее время я понятия не имею, что делать дальше. Также я не нашел установку, подобную этой, описанную с такими проблемами.

Спасибо ;)


person nucular    schedule 16.07.2013    source источник


Ответы (1)


Во-первых, вы, вероятно, захотите обновить свою Solr-версию, поскольку с версии 4.0 было исправлено несколько утечек ссылок в журналах транзакций.

Жесткая фиксация обычно должна удалять старые журналы транзакций, поскольку документы в любом случае записываются на диск в индексе iirc, что может указывать на то, что некоторые старые ссылки висят вокруг.

Другим вариантом было бы полное отключение журнала транзакций, поскольку вы в любом случае создаете совершенно новый индекс при каждом запуске и удаляете его.

person MatsLindh    schedule 16.07.2013
comment
Привет, спасибо за быстрый ответ, да, я уже думал об обновлении версии, может быть, я начну с этого и проверю, ротируются ли tlogs, как ожидалось. Вы даже предлагаете отключить жесткие коммиты? Ну я так понимаю у меня он работает только как бекап на случай краша для мастера, да? Но пока я делаю только жесткие фиксации и реплицирую полный индекс только на ведомые устройства, мне не нужен tlog для синхронизации ведомых устройств, верно? - person nucular; 16.07.2013
comment
Правильно, отключить tlog, а не жесткие коммиты. В любом случае tlog не принесет особой пользы, так как вам все равно сложно зафиксировать и реплицировать полный новый индекс. - person MatsLindh; 16.07.2013
comment
Я слышал от коллеги, что tlogs могут быть важны для восстановления, если, например, мой мастер зависает, и мне нужно убить процесс, что приведет к повреждению основного индекса. Что об этом? Я сам довольно скептичен и не думаю, что tlogs могут помочь в этом случае, что вы думаете? - person nucular; 16.07.2013
comment
Я почти уверен, что вы не получите поврежденный индекс (по крайней мере, с нами такого никогда не случалось), а если он поврежден, журнал транзакций все равно вас не спасет (что он должен обновлять?). Журнал транзакций в основном используется для поиска почти в реальном времени, распределения операций в SolrCloud и т. д. Вам, вероятно, будет лучше просто запустить новый индекс, если ваш основной индекс будет поврежден по какой-либо другой причине. Счетчик журнала транзакций также связан с количеством коммитов, а не с количеством обновлений документов iirc. - person MatsLindh; 16.07.2013
comment
если это количество коммитов... я могу активировать AutoSoftCommit каждые несколько минут, верно? Даже без фактических изменений в данных это будет считаться фиксацией в отношении этих 100, верно? - person nucular; 16.07.2013
comment
Я бы так догадался. Попробуйте и посмотрите. Насколько мне известно, жесткая фиксация всегда должна очищать журнал транзакций. - person MatsLindh; 16.07.2013