Этот раздел представляет только фактическую боевую часть. Для конкретных теоретических параметров, пожалуйста, Baidu.
Требуемые инструменты: Linux Server Jmeter Test Tool Xshell. Веб -приложение
Параметры JVM от Tomcat могут быть настроены в Catalina.sh, и если он находится в окне, вы можете настроить файл .bat.
Конфигурация 1:
Здесь я настроил путь в журнал GC как /HOME/LOG/GC.LOG для печати журнала GC, начальная куча и максимальная память кучи устанавливаются на 50 м, а когда файл выходного дампа переполнен, он использует серийный сборщик мусора, а размер постоянного поколения составляет 50 м.
Поместите веб -приложение в соответствующий каталог, настраивайте Server.xml (конфигурация здесь не введена) и запустите Tomcat.
Пропускная пропускная способность выполняется с использованием инструмента для испытания давления (JMeter). Студенты, которые никогда не использовали его, могут скачать и узнать его на официальном сайте http://jmeter.apache.org/
Создайте группу пользователей (10 потоков, каждый поток запрашивает 1000 раз), настройте информацию о HTTP -запросе, создайте совокупный отчет и журнал GC
Давайте сначала посмотрим на журнал GC:
Полный GC на экране, наконец -то проверьте совокупный отчет:
Пропускная способность поддерживается на уровне 122,7 в секунду. Из этого случая мы видим, что старое поколение в основном заполнено, а после Fullgc новое поколение останется немного. В целом, время паузы полного GC является самым длинным и происходит так часто, очевидно, такая конфигурация необоснована.
Конфигурация 2:
Эта конфигурация в основном увеличивает максимальную память кучи. Чтобы автоматически расширить виртуальную машину и получить стабильный размер памяти кучи.
Просто обратите внимание на максимальную память кучи 82924K составляет около 80 м, что означает, что виртуальная машина автоматически расширяет память кучи до 80 м и стабилизирует ее. Этот конфигурационный тест просто для поиска стабильной памяти кучи для следующего теста.
Конфигурация три:
Установите начальную память кучи на 128 м.
Из результатов конфигурации 2 можно видеть, что память кучи, наконец, стабильна на уровне около 80 м, поэтому память кучи меньше 80 м может вызвать большое количество реакций GC, поэтому здесь я установил память кучи на 128 м, что может уменьшить количество GC.
Вы можете видеть, что пропускная способность немного увеличилась, количество GCS значительно снизилось, а временные интервалы GC стали длиннее.
Конфигурация 4:
В настоящее время используется Parallalgc Recycler, который является многопоточным параллельным переработчиком.
Пропускная способность GC Recycler с использованием многопоточной параллели была немного улучшена. (Parallalgc и Serialgc мало влияют на пропускную способность без давления GC.)
Конфигурация 5:
Конфигурация 6:
Согласно завершению конфигурации 3, GC часто встречается в памяти кучи ниже 80 м. В сочетании с выводом, полученным в конфигурации 4, когда существует определенное давление GC, пропускная способность Parallelgc и Serialgc будет показывать определенные различия. Если память кучи 5 и 6 настроена с 64 м <80 м, будет возникнуть частый GC. При использовании различных переработчиков GC теоретически будет большая разница в пропускной способности, но почему разница в моем эксперименте не очень большая, и почему? Эй, моя семья бедна. Я использую одноядерный процессор. В случае с одним ядром изменения производительности Parallelgc не очевидны. SerialGC рекомендуется, когда одноядерные или параллельные возможности слабы. Студенты, у которых есть условия, могут попробовать это с помощью многоядерного сервера!
Конфигурация 7:
Попробуйте использовать Parnewgc. Новое поколение использует Parnewgc для переработки, в то время как старое поколение по -прежнему использует Serialgc для переработки. Видите, как производительность?
Он обладает лучшей производительностью, чем использование серийного переработчика, но худшая производительность, чем использование параллельного переработчика.
Кроме того, обновление версии JDK также может немного улучшить производительность, но обновление версии JDK поставляется с определенными рисками, и некоторые неизвестные ошибки могут быть введены в новую версию JDK.
Наконец, я перечислил несколько часто используемых параметров конфигурации JVM для справки:
1. Параметры, связанные с периодом серийного восстановления
• -xx:+userialgc: используйте серийные коллекционеры в новых и старых поколениях
• -xx: Survivororratio: Установите размер области Eden и соотношение области выжившего
• -xx: претензиизризойдроголд: установите порог для больших объектов, чтобы непосредственно войти в старость. Когда размер объекта превышает это значение, оно будет выделено непосредственно в старости
• -xx: maxtenuringthreshold: устанавливает максимальное возрастное значение объекта, вступающего в старость. После каждого несовершеннолетнего GC возраст субъекта добавляется 1. Любой объект, превышающий этот возраст, определенно войдет в старость.
2. Параллельные параметры, связанные с GC
• -xx:+useparnewgc: используйте параллельные коллекционеры в новом поколении.
• -xx:+useparalleloldgc: используйте параллельные коллекционеры в старости
• -xx:+parallelgcthreads: устанавливает количество потоков, используемых для сбора мусора, которые обычно могут быть установлены на равное количество процессоров. Когда существует большое количество процессоров, также можно установить относительно небольшое значение.
• -xx:+maxgcpausemillis: установите максимальное время паузы сбора мусора. Его значение - это целое число больше 0. Когда коллекционер работает, он будет отрегулировать размер кучи Java или некоторых других параметров, а также управлять временем паузы до maxgcpausemillis как можно больше.
• -xx: +UseAptivesizePolicy: включите адаптивную стратегию GC. В этом режиме параметры, такие как размер нового поколения и отношение выжившего, и возраст объекта в старом поколении, будут автоматически скорректированы для достижения точки баланса между размером кучи, пропускной способностью и паузой.
• -xx:+gctimeratio: установите размер пропускной способности. Его значение - это сертификат от 0 до 100. При условии, что значение GCTimeratio составляет n, система будет тратить не более 1/(1+N) времени на сборку мусора.
3. Параметры, связанные с коллекционером CMS
• -xx:+useconcmarksweepgc: новое поколение использует параллельные коллекционеры, в то время как старое поколение использует серийные коллекционеры CMS+.
• -xx: parallelcmsthreads: установите количество потоков для CMS.
• -xx: cmsinitiatingoccupancyfraction: установите, сколько CMS Collector запускается после использования пространства пожилых людей, по умолчанию 68%
• -xx: usecmscompactatfullcollection: установите, необходимо ли CMS дефрагментация после завершения сбора мусора
• -xx: cmsfullgcbeforecpaction: установите, сколько раз выполняется сборка мусора CMS и выполняется сжатие памяти.
• -xx:+cmsclassunloadingenabled: позволяет восстанавливать метаданные класса
• -xx: cmsinitiatingpermoccupancyfraction: когда коэффициент постоянной занятости достигает этого процента, запустите восстановление CMS (при условии, что -xx:+CMSClassunLoadEnabled активируется)
• -xx: usecmsinitiatingoccupancyonly: означает, что восстановление CMS выполняется только после достижения порога.
• -xx:+cmsincrementalMode: используйте инкрементный режим, который более подходит для одного процессора. Инкрементный режим помечается как выброшенная в середине и будет полностью удален в JDK9.
4. Параметры, связанные с периодом восстановления G1
• -xx:+USEG1GC: используйте G1 восстановление
• -xx:+maxgcpausemillis: установить максимальное время паузы сбора мусора
• -xx:+gcpauseintervalmillis: установить интервал времени паузы.
5. Связанный
• -xx:+usetlab: включить распределение TLAB.
• -xx:+printtlab:
• -xx: tlabsize: установить размер TLAB
• -xx:+resizetlab: автоматически регулируйте размер TLAB
6. Некоторые другие параметры
• -xx:+DisableExplicitgc: Disable exlicit GC
• -xx:+explicitgcinvokesconcurrent: используйте параллелизм для обработки явного GC
Вышеуказанный JVM Tomcat Performance Practice (рекомендуется) - это весь контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.