Белый экран при открытии приложения

Добрый день!

Используем jmix 2.4.3

У нас примерно каждый 12-14 дней при открытии приложения (/login) белый экран, пользователей примерно в день от 20 до 50 человек,

Ошибок в логах нет, ни в базе postgres и в самом spring.log
Сервер последний раз вчера к 6 вечера вышел белый экран, и только утром после перезагрузки начал работать

Возможно думали из за кол-во подключений к базе, стоит максимальное 100
Наблюдали кол-во и никогда не доходило до 100

В логах вообще всё нормально, отрабатывается шедулеры по email, bpm и тд
Но вот люди просто не могут войти
Самое тяжелое то, что не можем воспроизвести

Первый раз когда такое произошло, api запросы отрабатывали как нужно
Последние разы не было возможностей посмотреть, сразу перезагружали сервер

Может у кого то есть идеи куда можно копать?
могу больше информации дать, только скажите какие)

Еще вариант, что система зависла → Оно должно было отвиснуть к утру или каждый день система должна виснуть, потому что каждый день примерно одни и те же действия делают

Здравствуйте

Пока трудно сказать, в чем может быть проблема. Уточните, пожалуйста, когда происходит такая ситуация, на верхней границе страницы “бежит” синяя полоса прогрузки? Вот такая:
image

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

С уважением,
Дмитрий

Добрый день,
Синего ползунка сверху нет, в console тоже ничего нет

Успели сохранить ключевые метрики через Liberica mission control

Что показало:

The maximum amount of memory used was 17,4 GiB. This is 98,9 % of the 17,6 GiB of physical memory available. Having little free memory may lead to swapping, which is very expensive. To avoid this, either decrease the memory usage or increase the amount of available memory.

image

В properties пишет:

|Event Thread|[flowable-bpmn-reset-expired-jobs, flowable-bpmn-acquire-timer-jobs, quartzScheduler_Worker-4, quartzScheduler_Worker-6, RMI TCP Connection(4)-172.16.32.90, Catalina-utility-1, flowable-bpmn-acquire-a[…]]|[flowable-bpmn-reset-expired-jobs, flowable-bpmn-acquire-timer-jobs, quartzScheduler_Worker-4, quartzScheduler_Worker-6, RMI TCP Connection(4)-172.16.32.90, Catalina-utility-1, flowable-bpmn-acquire-a[…]]|

У меня из BPM за последнее время часто запускались с БПМ где отправляется уведомления и переменные собираются через script (прикрепил файл)

bpm.txt (7.8 КБ)

Нашел в потоках deadlock

Мы вызываем при открытии detail view и вызывается: io.jmix.notifications.channel.userSessionNotifier.notifyUserSession(userDetails.getUsername());
Для того чтобы сделать уведомление прочитанным

Возможно проблема в VaadinSession.lock
Found one Java-level deadlock:

“http-nio-8004-exec-1”:
waiting for ownable synchronizer 0x00000007281d13e8, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
which is held by “http-nio-8004-exec-2”

“http-nio-8004-exec-2”:
waiting for ownable synchronizer 0x0000000743e00020, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
which is held by “http-nio-8004-exec-1”

Java stack information for the threads listed above:

“http-nio-8004-exec-1”:
at jdk.internal.misc.Unsafe.park(java.base@17.0.12/Native Method)
- parking to wait for <0x00000007281d13e8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(java.base@17.0.12/LockSupport.java:211)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@17.0.12/AbstractQueuedSynchronizer.java:715)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(java.base@17.0.12/AbstractQueuedSynchronizer.java:938)
at java.util.concurrent.locks.ReentrantLock$Sync.lock(java.base@17.0.12/ReentrantLock.java:153)
at java.util.concurrent.locks.ReentrantLock.lock(java.base@17.0.12/ReentrantLock.java:322)
at com.vaadin.flow.server.VaadinSession.lock(VaadinSession.java:730)
at io.jmix.flowui.sys.SessionHolder.getVaadinSessionState(SessionHolder.java:130)
at io.jmix.flowui.sys.SessionHolder.getActiveSessionsForUsernames(SessionHolder.java:70)
at io.jmix.flowui.UiEventPublisher.publishEventForUsersInternal(UiEventPublisher.java:91)
at io.jmix.flowui.UiEventPublisher.onUiUserEvent(UiEventPublisher.java:85)
at jdk.internal.reflect.GeneratedMethodAccessor1445.invoke(Unknown Source)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@17.0.12/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(java.base@17.0.12/Method.java:569)
at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:365)
at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:237)
at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:168)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:452)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:385)
at io.jmix.core.cluster.ClusterApplicationEventPublisher.onAppEventMessage(ClusterApplicationEventPublisher.java:56)
at io.jmix.core.cluster.ClusterApplicationEventPublisher$$Lambda$2358/0x00007f85cd3d2150.handleMessage(Unknown Source)
at io.jmix.core.cluster.LocalApplicationEventChannelSupplier$1.lambda$send$0(LocalApplicationEventChannelSupplier.java:52)
at io.jmix.core.cluster.LocalApplicationEventChannelSupplier$1$$Lambda$6140/0x00007f85cd7f40f8.accept(Unknown Source)
at java.util.ArrayList.forEach(java.base@17.0.12/ArrayList.java:1511)
at io.jmix.core.cluster.LocalApplicationEventChannelSupplier$1.send(LocalApplicationEventChannelSupplier.java:52)
at org.springframework.messaging.MessageChannel.send(MessageChannel.java:45)
at io.jmix.core.cluster.ClusterApplicationEventPublisher.publish(ClusterApplicationEventPublisher.java:70)
at io.jmix.flowui.UiEventPublisher.publishEventForUsers(UiEventPublisher.java:167)
at io.jmix.notificationsflowui.event.VaadinSessionNotificationEventPublisher.notifyUserSession(VaadinSessionNotificationEventPublisher.java:29)