JBossDeveloper

jboss

Я працюю над проектом Business Intelligence. Я запускаю програму BI (на основі сервлету JSP) на jboss-4.2.3.GA.

Моя вимога - покращити продуктивність програми, налаштувавши параметри JBoss та операційної системи .

Апаратне забезпечення: чотириядерний процесор Intel Q8400 2,66 ГГц, 4 ГБ оперативної пам'яті

ОС: Windows Server 2008 R2 64 BIT

JAVA: jdk1.6.0_20 64 BIT

База даних Моя програма не використовує JBoss для підключення бази даних

я використовую сторонній інструмент тестування навантаження для вимірювання часу роботи програми, і я спробував виконати наведені нижче варіанти. (я вклав свій файл run_perfomance .bat)

rem Параметри пулу розподілу пам'яті JVM. Змінити відповідно.
встановити JAVA_OPTS =% JAVA_OPTS% -Xms2816m -Xmx2816m

rem З JVM Sun зменшуйте RMI GC до одного разу на годину
встановити JAVA_OPTS =% JAVA_OPTS% -Dsun.rmi.dgc.client.gcInterval = 900000 -Dsun.rmi.dgc.server.gcInterval = 900000 -XX: ParallelGCThreads = 8

встановити JAVA_OPTS =% JAVA_OPTS% -XX: PermSize = 512m -XX: MaxPermSize = 512m

Я почав працювати над JBoss для розгортання моєї програми на клієнтських серверах. Чи може хтось допомогти мені з наступними проблемами ?

1) Як я можу запропонувати розмір JVM для (Xms та Xmx)? Зазвичай я пропоную 70% фізичної пам'яті

2) Як покращити продуктивність програми, видаливши непотрібні служби JBoss та налаштувавши JBoss?

3) Як я можу запобігти помилці JBoss Out of Memory, коли я використовую 50 одночасних користувачів для завантаження простого аналізу за допомогою мого додатка.

4) Яким може бути найкращий спосіб перевірити використання JVM на піку використання додатків? (я використовую веб-консоль JBoss)

5) Як я можу запропонувати мінімальне апаратне забезпечення та рекомендовані вимоги до обладнання (не лише для запуску JBoss, а й для плавного запуску мого додатка)?

6) як я можу знайти правильну стратегію тестування навантаження для роботи з налаштуванням продуктивності .?

Будь-яка допомога високо цінується. я вивчаю тюнінг JBoss AS .

1. Re: JBoss Tuning & Slimming для моєї програми

Потоки збору сміття пов'язані з пам'яттю - ви ніколи не повинні запускати більше потоків GC, ніж у вас є процесори (або ядра). Оскільки у вас чотириядерна система, ви повинні запускати 4 потоки GC, а не 8.

1) Це повністю залежить від розміру робочого набору. Що є вигадливим способом сказати, що дано додатковій купі багато купи, як це потрібно, але не більше. Занадто багато купи призведе до неприпустимо великих разів паузи GC, занадто мала купа призведе до занадто великої кількості GC. Вам потрібно знайти «солодке місце». Для цього потрібно проаналізувати дані GC. Пропозиції щодо збору даних GC та їх аналізу див. У цих технічних документах:

Статистичний аналіз збору сміття Java 101

Аналіз продуктивності збору сміття Java 201

3) Див. Відповідь на №1.

4) Див. Відповідь на №1. Крім того, VisualVM для цього зручний.

5) Не впевнений, про що ви питаєте. Якщо вам потрібна купа, яка перевищує приблизно 3 ГБ, вам слід додати більше оперативної пам'яті.

6) Яке тестування навантаження ви зробили? (Це ціла окрема тема)

Крім того, є багато рекомендацій у різних дописах на форумі про ефективність: http://community.jboss.org/en/jbossas/performance

2. Re: JBoss Tuning & Slimming для моєї програми

Велике спасибі за Вашу швидку відповідь. Ваша відповідь допомогла в роботі над моїми завданнями з налаштування.

Вибачте, я не повністю зрозумів, що ви написали вище - Занадто багато купи призведе до неприпустимо великих разів паузи GC, занадто мала купа призведе до занадто великої кількості GC.
На моє розуміння, якщо розмір купи менший, GC потрібно буде запускати рідше і займатиме менше ресурсів пам'яті в цілому.
А якщо розмір купи більше, GC потрібно буде запускати частіше і загалом займатиме більше ресурсів пам'яті.
Це правильно ? дайте мені знати, будь ласка.

Близько 5:
У нас є програма для аналітики з високою обробкою, яка працює на сервері Jboss.
Кількість користувачів, які використовують додаток, може становити від 5 до 50 одночасних користувачів.
Я повинен рекомендувати їм апаратне забезпечення, виходячи з кількості одночасних користувачів. Чи можете ви дати кілька підказок щодо того, як я можу це визначити? ?

3. Re: JBoss Tuning & Slimming для моєї програми

>> Згідно з моїм розумінням, якщо розмір купи менший, GC потрібно буде запускати рідше

Типовий додаток Java генерує багато сміття щосекунди (типовий незначний GC зберігає лише близько 10-20% об'єктів у просторі Eden, решта - це сміття), тому менша купа (або Eden space) швидше заповниться те сміття.

>> Я повинен рекомендувати їм обладнання, виходячи з кількості одночасних користувачів. Чи можете ви дати кілька підказок щодо того, як я можу це визначити? ?

Використовуйте інструмент тестування навантаження, такий як JMeter (безкоштовний, з відкритим кодом) або LoadRunner ($$$$$$), створіть сценарій, що імітує типові взаємодії користувачів, і запустіть його. Результати цього повинні дати вам зрозуміти, яке обладнання вам потрібно. Зверніть увагу, що відповідь на подібне питання майже повністю залежить від програми, про яку йде мова, тому немає загальних вказівок, які я можу надати.