Apache
Ознакомьтесь с собственной документацией Apache, она содержит более подробные сведения, чем я мог бы здесь:
http://httpd.apache.org/docs/2.0/misc/perf -tuning.html
JVM
Установите для Xmx JVM не более 70% (примерно) от общей свободной физической памяти. Причина этого в том, что библиотеки perm gen и JVM также занимают дополнительное место - цель состоит в том, чтобы общая память процесса никогда не использовала виртуальную память / память подкачки. Если вы установите слишком большое значение, вы начнете видеть такие проблемы, как «превышен предел накладных расходов сборщика мусора».
Ваш алгоритм сборщика мусора может иметь большое влияние на производительность - убедитесь, что вы используете какую-либо форму параллельного сборщика, а не сериал "пауза, отметка и развертка". JVM обычно делает это автоматически в режиме -server
.
Используйте инструмент, такой как JConsole или JVisual VM, чтобы проверить сборщик мусора и сколько кучи вы фактически используете, и отрегулируйте его до нужного размера - слишком большая куча может повлиять на время сборки мусора.
Tomcat
Как для потоков HTTP-коннектора в одном экземпляре Tomcat, в зависимости от вашего приложения, вы обычно можете увеличить количество потоков примерно до 600, прежде чем возникнут проблемы - однако часто нет необходимости в том, чтобы оно было настолько большим - вы просто добавляете больше нагрузки на ваш процессор и память.
Когда вы довольны максимальным количеством потоков, я затем устанавливаю minSpareThreads
и maxSpareThreads
относительно этого. Увеличение значений, если я знаю, что у меня появятся всплески новых подключений и т. Д.
Затем acceptCount
. Это максимальное количество подключений в очереди -c onnections, которые выходят за пределы этого параметра после использования потоков соединителя, получат сообщение «В соединении отказано».
В качестве небольшой настройки вы можете установить enableLookups
(разрешить DNS-имя хоста поиски) на ложь. Когда он включен, (незначительно) отрицательно влияет на производительность.
Также проверьте Tomcat Native Library, в ней используется собственный код для повышения производительности при выполнении определенных операций (например, файловый ввод-вывод и т. Д.).
Нагрузочное тестирование
Для базовой нагрузки / тестирование производительности, ознакомьтесь с Apache JMeter:
http://jakarta.apache.org/jmeter/
Мы используем его для проверки производительности базовой загрузки страницы с тестовыми сценариями JMeter с использованием сотен одновременных запросов. Тем не менее, для его запуска вам понадобится довольно здоровый сервер (не на том же компьютере, на котором вы используете Apache HTTPD и Tomcat).
В качестве незначительной настройки вы можете установить для enableLookups
(разрешить поиск имени хоста DNS) значение false. Когда он включен, (незначительно) отрицательно влияет на производительность.
Также проверьте Tomcat Native Library, в ней используется собственный код для повышения производительности при выполнении определенных операций (например, файловый ввод-вывод и т. Д.).
Нагрузочное тестирование
Для базовой нагрузки / тестирование производительности, ознакомьтесь с Apache JMeter:
http://jakarta.apache.org/jmeter/
Мы используем его для проверки производительности базовой загрузки страницы с тестовыми сценариями JMeter с использованием сотен одновременных запросов. Тем не менее, для его запуска вам понадобится довольно здоровый сервер (не на том же компьютере, на котором вы используете Apache HTTPD и Tomcat).
В качестве незначительной настройки вы можете установить для enableLookups
(разрешить поиск имени хоста DNS) значение false. Когда он включен, (незначительно) отрицательно влияет на производительность.
Также проверьте Tomcat Native Library, в ней используется собственный код для повышения производительности при выполнении определенных операций (например, файловый ввод-вывод и т. Д.).
Нагрузочное тестирование
Для базовой нагрузки / тестирование производительности, ознакомьтесь с Apache JMeter:
http://jakarta.apache.org/jmeter/
Мы используем его для проверки производительности базовой загрузки страницы с тестовыми сценариями JMeter с использованием сотен одновременных запросов. Тем не менее, для его запуска вам понадобится довольно здоровый сервер (не на том же компьютере, на котором вы используете Apache HTTPD и Tomcat).
ознакомьтесь с собственной библиотекой Tomcat, в ней используется собственный код для повышения производительности определенных операций (например, файлового ввода-вывода и т. д.).Нагрузочное тестирование
Для базового тестирования нагрузки / производительности ознакомьтесь с Apache JMeter:
http: / /jakarta.apache.org/jmeter/
Мы используем его для тестирования производительности базовой загрузки страницы с тестовыми скриптами JMeter, использующими сотни одновременных запросов. Тем не менее, для его запуска вам понадобится довольно здоровый сервер (не на том же компьютере, на котором вы используете Apache HTTPD и Tomcat).
ознакомьтесь с собственной библиотекой Tomcat, в ней используется собственный код для повышения производительности определенных операций (например, файлового ввода-вывода и т. д.).Нагрузочное тестирование
Для базового тестирования нагрузки / производительности ознакомьтесь с Apache JMeter:
http: / /jakarta.apache.org/jmeter/
Мы используем его для тестирования производительности базовой загрузки страницы с тестовыми скриптами JMeter, использующими сотни одновременных запросов. Тем не менее, для его запуска вам понадобится довольно здоровый сервер (не на том же компьютере, на котором вы используете Apache HTTPD и Tomcat).
разумным начальным значением является 25% нового размера (Xms) по сравнению с общим размером кучи (Xmx)
Я бы посоветовал вам затем профилировать ваше приложение - на основе пиковой нагрузки и наблюдать использование памяти с помощью LambdaProbe или аналогичного средства и посмотрите, что вам нужно изменить
Куча, я бы изначально установил ms = mx = 1 ГБ. 1.5, если ваше приложение требует памяти. Я никогда не видел никакого смысла (или выгоды) в наличии переменного размера кучи в серверной среде.
Определение размера пула потоков - это отдельная глава. В первую очередь я говорю о Tomcat.
Если в вашем приложении много синхронизированных разделов (общие кеши, внешние ресурсы / интеграции только с последовательным доступом и т.д.), рабочие потоки имеют убывающую отдачу по мере их увеличения, тем больше времени они проведут в ожидании друг друга. С вашими спецификациями и ничего не зная о вашем приложении, я скажу 50 в качестве отправной точки с точки зрения размера пула потоков. Вам нужно будет запустить несколько тестов производительности, чтобы правильно настроить это. Используйте, например, jmeter, и создайте тестовый сценарий, который имитирует один или несколько основных вариантов использования на вашем сайте. Используйте 2 или 3 временных экземпляра EC2 в качестве генераторов нагрузки (они понадобятся вам только на короткое время) при запуске приложения jmeter-server.
Запускайте тестовые сценарии с перестановками, например, 60, 120, 180 и 240 потоков запросов jmeter и 30, 50, 70 и 90 рабочих потоков tomcat. Сравните время отклика и использование ЦП и памяти на вашем сервере. Для получения базовой информации о процессоре / памяти вы можете использовать стандартную информацию jconsole или visualvm вне вашей JVM. Вы также можете запустить JVM Tomcat с подробной сборкой мусора (ведение журнала GC) и изучить память и поведение GC с помощью чего-то вроде tagtraums GC viewer .
они понадобятся мне только на короткий период), где вы запускаете приложение jmeter-server.Запустите тестовые сценарии с перестановками, например, 60, 120, 180 и 240 потоков запросов jmeter и 30, 50, 70 и 90 tomcat рабочие потоки. Сравните время отклика и использование ЦП и памяти на вашем сервере. Для получения базовой информации о процессоре / памяти вы можете использовать стандартную информацию jconsole или visualvm вне вашей JVM. Вы также можете запустить JVM Tomcat с подробной сборкой мусора (ведение журнала GC) и изучить память и поведение GC с помощью чего-то вроде tagtraums GC viewer .
они понадобятся мне только на короткий период), где вы запускаете приложение jmeter-server.Запустите тестовые сценарии с перестановками, например, 60, 120, 180 и 240 потоков запросов jmeter и 30, 50, 70 и 90 tomcat рабочие потоки. Сравните время отклика и использование ЦП и памяти на вашем сервере. Для получения базовой информации о процессоре / памяти вы можете использовать стандартную информацию jconsole или visualvm вне вашей JVM. Вы также можете запустить JVM Tomcat с подробной сборкой мусора (ведение журнала GC) и изучить память и поведение GC с помощью чего-то вроде tagtraums GC viewer .
Для получения базовой информации о процессоре / памяти вы можете использовать стандартную информацию jconsole или visualvm вне вашей JVM. Вы также можете запустить JVM Tomcat с подробной сборкой мусора (ведение журнала GC) и изучить память и поведение GC с помощью чего-то вроде tagtraums GC viewer . Для получения базовой информации о процессоре / памяти вы можете использовать стандартную информацию jconsole или visualvm вне вашей JVM. Вы также можете запустить JVM Tomcat с подробной сборкой мусора (ведение журнала GC) и изучить память и поведение GC с помощью чего-то вроде tagtraums GC viewer .