Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Архитектура производительности и развертывания веб-приложений (java)

Автор вопроса: ring bearerОтветов: 4

У меня есть два вопроса относительно развертывания веб-приложения Java и его влияния на производительность. У нас есть приложение, развернутое на serverA, с JSP, разнесенными в один каталог контента (это означает, что JSP не являются частью WAR) Вопрос 1: Я знал, что это был подход к разработке, а не любые другие среды. Замедляет ли это развернутое развертывание производительность?

теперь каталог содержимого перекрестно монтируется (общий ресурс NFS) на другое оборудование, и там мы запускаем serverB, который также использует JSP для своего содержимого. Если сервер A и сервер B работают и используют один и тот же контент, может ли это снизить производительность?

  • Помимо производительности, серьезной проблемой будет стабильность и избыточность. Почему вы запускаете каталог содержимого из NFS? У NFS есть множество соображений, которые следует учитывать. Блокировка файлов, отключение временных меток и т. д. Если ваш диск на сервере B выйдет из строя, вы также потеряете сервер A. Какова общая цель использования NFS здесь? Keibosh 17.08.2010
  • Контент, включая изображения и мультимедиа, занимает около 3 ГБ и является общим из-за задержки развертывания, а также из-за нехватки места. ring bearer 17.08.2010

javaweb-applicationsperformanceglassfish

Ответы

Ответ 1 · рейтинг 1 · Stephen C

Развертывание JSP в разобранном виде (а не в файле WAR) не будет иметь никакого значения с точки зрения производительности. Когда файл WAR развертывается, он все равно распаковывается.

Помещение контента (включая JSP) в файловую систему, смонтированную NFS, откроет доступ к файлам и может привести к проблемам в работе, если ваши смонтированные NFS устаревают в неподходящее время. Это произойдет при первом использовании JSP, а также может произойти в другое время, если ваш механизм JSP настроен на периодическую проверку измененных JSP.

Ответ 2 · рейтинг 1 · letronje

В первый раз, когда потребуется какой-либо jsp, он будет скомпилирован в сервлет и сохранен в кеше веб-контейнера (по крайней мере, это делает tomcat). Поскольку папка кеша не находится поверх NFS, это не должно влиять на производительность веб-сервера. Тем не менее, может быть хорошей идеей предварительно скомпилировать ваши JSP.

Ответ 3 · рейтинг 1 · Dean J

Развертывание WAR-файла должно немного сократить время развертывания, но сервер все равно разнесет WAR-файл при его развертывании.

Как указывалось в других ответах, JSP переводятся в сервлеты, а затем компилируются в байт-коды .class. Это происходит при первом доступе пользователя к этому JSP, и это вызывает задержку для пользователей, особенно если это сложная страница. Лучший способ обойти это - предварительно скомпилировать JSP.

Ответ 4 · Mercy

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы