Назад | Перейти на главную страницу

Графический интерфейс приложения на Tomcat с большой нагрузкой не отвечает

У нас есть серверное веб-приложение, установленное на tomcat 8, у которого есть часть графического интерфейса, написанная на Apache wicket MVC (версия 1.4) - графический интерфейс калитки не отвечает в тот момент, когда сервер начинает выполнять тяжелую обработку.

В среднем загрузка ЦП составляет около 85%. Страница может обновиться через минуту и ​​может никогда не вернуться.

Как я могу дать калитке более высокий приоритет, либо в коде, либо в настройках сервера, чтобы она реагировала при высокой нагрузке? Я был бы не против, если бы он украл CPU из внутренних потоков.

Некоторое пояснение: все приложение представляет собой единую войну, поэтому потоки калитки и «backend» выполняются в одном jvm под одним и тем же веб-приложением. Страница калитки, похоже, не нуждается в каких-либо важных занятых объектах, которые используют другие потоки.

Если два приложения сильно объединены, как в части wiket, выполняющей блокирующие (синхронные) вызовы части обработки, единственное, что вы можете сделать, это выяснить, почему приложение обработки блокируется, и попытаться оптимизировать его.

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

Таким образом, у вас будет еще больше информации о том, какое из приложений использует больше ЦП, или вы можете отдать больший приоритет тому, что захотите, например. на linux nice / renice.

Еще одно преимущество состоит в том, что количество потоков, которые может обрабатывать tomcat, фиксировано, поэтому, помещая оба приложения в один и тот же экземпляр, одно приложение может использовать все потоки, блокирующие другое.

Надеюсь это поможет