TL; DR
У меня есть бродячий размещенный индекс solr на компьютере с Windows 10, который дает сбой и перестает отвечать на запросы (сброс соединения одноранговым узлом) без каких-либо исключений в журналах solr. Как я могу начать отлаживать, что идет не так?
Вариант использования / проблема
Я пытаюсь проиндексировать постоянный поток данных учетной записи пользователя, который имеет многочисленные удаления и обновления по запросу. Обновление потока данных происходит каждые 4–5 секунд.
Кажется, все идет гладко, пока индекс solr не достигнет ~ 5,5 миллионов записей. Затем происходит сбой без ошибок или исключений в журналах Solr. Ошибка, которую получает клиент, является Сбросом соединения Пиром. Глядя на solr vm, экземпляры solr перестали работать.
Вот вывод ps -aux | grep sorl
сразу после прекращения работы solr:
solr 3048 0.0 0.0 16256 3612 ? Ss 17:23 0:00/lib/systemd/systemd --user
solr 3049 0.0 0.0 167420 3028 ? S 17:23 0:00 (sd-pam)
Затем, через минуту или две,вышеперечисленные процессы исчезают, и больше не выполняются процессы solr.
При проверке журналов solr ошибок и исключений не обнаружено.
Подробности VM
Вот информация оэкземпляр vagrant (Vagrantfile).
config.vm.box = "ubuntu/disco64"
...
config.vm.provider "virtualbox" do |v|
v.memory 4096 (4 gigs)
v.cpus 4
end
Установлен самый последний openjdk-8-jdk.
Установлен Solr 8.20.
Служба solr установлена в /vagrant / sorl, поэтому в теории должно быть достаточно места на диске. Экземпляр vagrant установлен на SSD-диске, на котором осталось 216 ГБ свободного места.
Solr Config
Я пытался следовать этому совету, Общие сведения о журналах транзакций, Soft Commit и Commit InSolrCloud для настройки моего индекса Solr. Я пытаюсь следовать стратегиям Heavy (массовая) индексации и Index-heavy, Query-light .
Единственные реальные значения, которые я изменил вПо умолчанию solrconfig.xml устанавливает для openSearcher значение true для autoCommit. Я внес это изменение, чтобы видеть индекс по мере его роста и запрашивать некоторые данные по мере сбора потока данных учетной записи пользователя.
<!-- AutoCommit
Perform a hard commit automatically under certain conditions.
Instead of enabling autoCommit, consider using "commitWithin"
when adding documents.
http://wiki.apache.org/solr/UpdateXmlMessages
maxDocs - Maximum number of documents to add since the last
commit before automatically triggering a new commit.
maxTime - Maximum amount of time in ms that is allowed to pass
since a document was added before automatically
triggering a new commit.
openSearcher - if false, the commit causes recent index changes
to be flushed to stable storage, but does not cause a new
searcher to be opened to make those changes visible.
If the updateLog is enabled, then it's highly recommended to
have some sort of hard autoCommit to limit the log size.
-->
<autoCommit>
<maxTime>${solr.autoCommit.maxTime:15000}</maxTime>
<openSearcher>true</openSearcher>
</autoCommit>
Я увеличил память индекса solr до 2 гигабайт,Вот вывод ps -aux | grep java
, когда работает solr.
java -server
-Xms2056m
-Xmx2056m
-XX:+UseG1GC
-XX:+PerfDisableSharedMem
-XX:+ParallelRefProcEnabled
-XX:MaxGCPauseMillis=250
-XX:+UseLargePages
-XX:+AlwaysPreTouch
-verbose:gc
-XX:+PrintHeapAtGC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:+PrintGCTimeStamps
-XX:+PrintTenuringDistribution
-XX:+PrintGCApplicationStoppedTime
-Xloggc:/vagrant/solr//logs/solr_gc.log
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=9
-XX:GCLogFileSize=20M
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=18983
-Dcom.sun.management.jmxremote.rmi.port=18983
-Dsolr.log.dir=/vagrant/solr//logs
-Djetty.port=8983
-DSTOP.PORT=7983
-DSTOP.KEY=solrrocks
-Duser.timezone=UTC
-Djetty.home=/opt/solr/server
-Dsolr.solr.home=/vagrant/solr//data
-Dsolr.data.home=
-Dsolr.install.dir=/opt/solr
-Dsolr.default.confdir=/opt/solr/server/solr/configsets/_default/conf -Dlog4j.configurationFile=file:/vagrant/solr//log4j2.xml
-Xss256k
-Dsolr.jetty.https.port=8983
-Dsolr.log.muteconsole
-XX:OnOutOfMemoryError=/opt/solr/bin/oom_solr.sh 8983 /vagrant/solr//logs
-jar start.jar
--module=http
Другая справочная информация
Я работал с solr раньше, но никогда с такими подробными или очень агрессивными даннымимаслобойки. Мой единственный настоящий профессиональный опыт - это добавить пару сотен тысяч записей в solr, а затем выполнить несколько простых запросов, удалить индекс и затем повторно собрать записи обратно в индекс ...
Plea
Любой дружеский совет или комментарии о том, как отладить эту проблему, будет принята с благодарностью. Я искал и искал, но не могу найти ничего, что удаленно выглядит как ответ на эту проблему.