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

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

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


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


Ответы (4)


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

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

person Stephen C    schedule 17.08.2010

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

person letronje    schedule 17.08.2010

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

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

person Dean J    schedule 17.08.2010

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

person Mercy    schedule 17.08.2010