LINUX.ORG.RU

java and logs

 cuba,


0

1

Есть кто понимает в java (tomcat) ?

Есть там какой то шедулер, и в один момент он перестал выполнять задания, насколько я понимаю должен в этот момент делать индексацию полнотекстового поиска (lucene), но не может.

2024-09-25 07:44:41,642 ERROR [com.haulmont.cuba.core.app.scheduling.RunnerBean] [app-core] [system] Error running ScheduledTask{1fd
635fd-ef0d-9de3-0dca-a167dc91afe0, cuba_FtsManager.processQueue, singleton, period=null, startDate=2019-10-31 10:59:51.121}
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at com.haulmont.cuba.core.app.scheduling.RunnerBean.executeTask(RunnerBean.java:199)
        at com.haulmont.cuba.core.app.scheduling.RunnerBean$2.run(RunnerBean.java:105)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.haulmont.cuba.core.app.scheduling.RunnerBean.executeTask(RunnerBean.java:197)
        ... 6 more
Caused by: java.lang.OutOfMemoryError: Java heap space

думал места не хватает, увеличил Хmx на 4Gb (было 8Gb), по фигу :( Пробовал по разному логи более детально включить, один фиг. Млжет кто подскажет куда нужно копать ?

Долго читал инет, есть что то отдаленно похожее, но там в логах есть за что зацепиться, в моем логе не понятно :(

И как избавится от … 6 more, может там есть чего.

P.S. В поддержку обращался, тухло все там :(

★★★★★

Ответ на: комментарий от annulen

Ну я как был сделал 12G (8+4 параметр Xmx) и ничего не поменялось :(

Произошло это в конкретное время, хлоп и перестало выполняться. На диске место есть … Как можно узнать сколько еще нужно ? Разве может он так резко изменится что даже добавление 4G мало ?

mx__ ★★★★★
() автор топика
Ответ на: комментарий от mx__

Муторная штука если поддержка тормозит.

Обычно при похожих ситуациях ищу ответы на следующие вопросы:

Есть ли логи за предыдущие дни, в которых присутствует таже самая ошибка в тоже +- время?

Есть ли логи, в которых данной ошибки нет?

Что в последннее время ставилось/обновлялось/заливалось в самой системе?

Что последнее время ставилось/обновлялось/заливалось в смежных системах?

Все ответы записываются в справку вышестящему начальству и причина выявляется сама собой.

Справку можно не отсылать.

areful
()

Причём тут томкет, если у тебя куба? Какая хоть версия? Это точно задание на индексацию? Если да, то очень смущает period = null. Сделай задание на 30 секунд, как в документации советуют.

И вообще у них прекрасная документация https://doc.cuba-platform.com/fts-6.6-ru/qs_indexing.html

Если нет программиста, то читай документацию на свою версию.

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 1)

java.lang.OutOfMemoryError

Однозначно намекает что память кончилась. А вот сколько её надо сложно сказать. К тому же если ты попал на какой-то баг с выжеранием всей памяти то сколько не выдели - не хватит.

ya-betmen ★★★★★
()

Это не томкат, это какая-то куба.

Надо увеличить память. Или исправить утечку памяти. Или оптимизировать потребление памяти.

В ... 6 more ничего нет, чего уже не было бы в других частях стектрейса, избавляться от него не надо.

Рекомендую обратиться к программисту, если увеличение памяти не поможет. Для начала надо попробовать увеличить до 128 GB и помониторить потребление через jconsole.

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 5)
Ответ на: комментарий от vtVitus

Причём тут томкет, если у тебя куба? Какая хоть версия? Это точно задание на индексацию? Если да, то очень смущает period = null. Сделай задание на 30 секунд, как в документации советуют.

Ну я не спец по всем этим cuba и т.д. Я хз откуда там такой период, когда такой ошибки небыло то в логах и не было ничего про это. А у задания период нормальный стоит.

Вот картинка как это глядеть через морду сервера: https://i.imgur.com/xZwzEHj.png

Много лет все было хорошо и тут хлоп …

Версия какая то старая вроде 4, но читать доку там поди фиг что поймешь. Я подумал что кто то уже на этом собаку съел.

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

Причем файл write.lock исчезает со всеми нижними файлами и после облома снова появляется.(вроде он должен появляться когда нет места)

https://i.imgur.com/jRkA0mK.png

Я думаю что кто то засунул настолько кривой документ что при его индексации все валится с ошибкой памяти … Но хз прав я или нет, и как найти что :(

P.S. Думал включу нормальные логи и сразу увижу чего там не так :(

mx__ ★★★★★
() автор топика
Ответ на: комментарий от vbr

Для начала надо попробовать увеличить до 128 GB и помониторить потребление через jconsole.

128Gb, мда уж. Но мне кажется что память это уже следствие … А без jconsole нельзя ? Просто в логах увидеть ?

mx__ ★★★★★
() автор топика
Ответ на: комментарий от mx__

Можешь включить логи гарбаж коллектора, но ты их немного замаешься разбирать с непривычки.

и как найти что :(

А для этого тебе хипдамп нужен, но опять таки если этим никогда не занимался то рискуешь ничего не понять.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)
Ответ на: комментарий от mx__

Ну не обязательно 128, можешь задать сколько получается. Это я так, с запасом.

jconsole это мониторинг потребления памяти. Если не глядеть «внутрь» виртуальной машины, то мониторинг памяти Java приложения не увидеть нормально.

В логах - ну смотри, скорей всего настоящая ошибка где-то выше. И не факт что она вообще в логах есть. Хотя поискать не помешает.

Если система до этого работала нормально, а тут сломалась, видимо нагрузка на неё превысила возможности сервера и надо просто увеличивать память, пока не заработает. Может там документ какой залили здоровый…

vbr ★★★★
()
Последнее исправление: vbr (всего исправлений: 1)

Как вариант: Попробовать найти logback.xml (если он есть) от приложения. Посмотреть какие в нём есть appenderы. В нем поставить level=«TRACE» на классе из лога или вообще все в TRACE поставить если место на диске есть. Далее ловить в расширенном логе события. Вдруг там прямо имя текущего индексируемого документа пишется

areful
()
Ответ на: комментарий от mx__

Ну я не спец по всем этим cuba и т.д.

Если ты не спец, то чего тогда ты пытаешься сделать? Либо позови спеца либо становись спецом, а так это попытка решить проблему метод научного тыка.

По картинке видно, что до этого метод ничего не делал, а сейчас начал что-то делать и падает. Так что у тебя не " один момент он перестал выполнять задания", а он тупо никогда не работал. Скорее всего тебе нужно зайти в jmx консоль и выполнить магические команды, которые описаны в документации.

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 1)
Ответ на: комментарий от vtVitus

По картинке видно, что до этого метод ничего не делал

Почему не делал ? Видно же сколько длились задания до этого и по завершение он показывал сколько он уже обработал. А после этой штуки он стал долго делал задание и за место результата выводит ошибку java (картинка).

Так что у тебя не " один момент он перестал выполнять задания", а он тупо никогда не работал.

Увы выше я показал что это не так.

Если ты не спец, то чего тогда ты пытаешься сделать? Либо позови спеца либо становись спецом

Извините но я не совсем понимаю ВАШ подход, по моему мнению человек не может быть спецом во всех программах что написаны другими людьми. Хотя есть отдельные люди которые думают что компьютерщик - должен уметь все что связано с компьютерами, причем если у него крыло погнется то едет к жестянщику а если что с мотором то к другому. Но почему то по их понятию это должен быть разный человек.

P.S. Я эту штуку починил, он не мог распарсить один pdf файл который в него залили как раз в это время и тупо валился, причем этот pdf попался такой всего один за 5 лет работы …

mx__ ★★★★★
() автор топика