2016-07-20 2 views
0

У меня есть сервер приложений Jboss под управлением Oracle Commerce. У меня есть 5 экземпляров службы страниц [VM Servers] и около 300 пользователей, просматривающих сайт в любой момент времени. Я пытаюсь придумать число для тайм-аута сеанса, чтобы у клиента было достаточно времени для просмотра и проверки, но затем также не нужно слишком много открытых сеансов, которые задерживали бы память. Итак, мой вопрос заключается в том, чтобы определить тайм-ауты сеанса?Как определить, сколько сеансов слишком много для веб-приложения

Jboss 7, Java 7 с памятью 8 гб для каждого jvm. В настоящее время тайм-аут сеанса установлен на 10 минут. Хотел бы увеличить его до 30 минут.

ответ

1

Вот что я могу придумать: - Размер сессии. - Пулы потоков - количество одновременных потоков для сервера. Это настраивается сервером приложений. Для JBoss доступно несколько пулов потоков, например, у вас есть несколько пулов для контейнера сервлетов, отдельно для контейнера EJB, и так далее. Здесь вы можете прочитать некоторые подробности. https://developer.jboss.org/wiki/ThreadPoolConfiguration#jive_content_id_Deploying_Threading_Components - Ваш прецедент. Сколько одновременных пользователей вы ожидаете.

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

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

Здесь следует отметить, что, поскольку у вас есть онлайн-приложение, вы должны предпочесть небольшой размер HEAP по сравнению с большим размером кучи из-за сборщика мусора. Вероятно, будет неплохо использовать новый сборщик мусора G1.

Редактировать на основе последнего комментария: Один наивного способ измерения кучи без очень сильной точности с помощью профилировщика является: сервера 1. Запустите, сделай пробный запуск с одним пользователем, чтобы инициализировать все классы , 2. Извлеките сборку garbadge и отметьте 3. Запустите большую выборку пользователей и наблюдайте за вашей пиковой памятью и насколько GC может освободиться (принудительно GC снова), когда ваша память выбора достигнута.

Теперь это наивный подход.

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

+0

Есть ли способ в Java, чтобы узнать, какой размер сеанса? – Cdesai

+0

Да это не очень сложно. Просто снарядите себя хорошим профилировщиком, таким как, например, Yourkit, и вы можете измерить размер любого объекта, который вы хотите. Если вам нужен бесплатный, возможно, visualVM сделает трюк. Опять же главный вопрос: насколько вы точны. –

0

Кроме того, вы должны рассмотреть возможность проверки памяти JVM, включив регистрацию GC. Это даст хорошую идею, когда она будет исчерпана. Другим показателем является использование ЦП. Это зависит от активности пользователя и приложения, что необходимо, если у вас достаточно памяти, вы можете увеличить количество параллельных сеансов, если у вас достаточно мощности процессора для обработки запросов.

Смежные вопросы