Лучшие практики для конфигурирования Apache / Tomcat

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
18
задан Rakibul Islam 1 September 2019 в 05:12
поделиться

3 ответа

Необходимо рассмотреть рабочую нагрузку, которую могли бы получить серверы.

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

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

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

, Например, рассматривают заявление, где у Вас есть ~300 новых запросов/секунда. Каждый запрос требует, чтобы в среднем 2,5 секунды служили. Это означает, что в любой момент времени у Вас есть ~750 запросов, которые должны быть обработаны одновременно. В этой ситуации Вы, вероятно, хотите настроить свои серверы так, чтобы у них было ~750 потоков обработки при запуске, и Вы могли бы хотеть добавить что-то как ~1000 потоков обработки в максимуме для обработки чрезвычайно высоких загрузок.

Также рассматривают для точно, для чего Вы требуете потока. В предыдущем примере каждый запрос был независим от других, не было никакого используемого отслеживания сессии. В большем количестве сценария "веб-выхода" у Вас могли бы быть пользователи, вошел на Ваш сайт, и в зависимости от Вашего используемого программного обеспечения, Apache и/или Tomcat, возможно, должны были бы использовать тот же поток для обслуживания запросов, которые прибывают в одну сессию. В этом случае Вам, возможно, понадобилось бы больше потоков. Однако, поскольку я знаю Tomcat, по крайней мере, Вы не должны будете действительно рассматривать это, поскольку он работает с пулами потоков внутренне так или иначе.

7
ответ дан 30 November 2019 в 09:25
поделиться

MaxClients

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

С предварительным ветвлением, только один запрос может быть обработан для каждого процесса. Поэтому целые апачи могут обработать самое большее запросы $MaxClients во время, которое требуется для обработки единственный запрос. Конечно, этот идеальный максимум может только быть достигнут, если для приложения нужны меньше, чем 1/ресурсы $MaxClients на запрос.

, Если, например, приложение занимает секунду процессорного времени для ответа на единственный запрос, установка MaxClients к четыре ограничит пропускную способность четырьмя запросами в секунду: Каждый запрос израсходовал апачское соединение, и апач только обработает четыре за один раз. Но если сервер имеет только два центральных процессора, даже это не может быть достигнуто, потому что каждая тактовая стеной секунда только имеет две секунды CPU, но запросам требовались бы четыре секунды CPU.

MinSpareServers

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

корректная установка этого зависит от Вашей рабочей нагрузки. Если у Вас есть страницы со многими подзапросами (изображения, iframes, JavaScript, css), тогда удар единственной страницы мог бы израсходовать намного больше процессов в течение короткого времени.

MaxSpareServers

, Имеющий слишком много неиспользованных апачских процессов, бродящих вокруг просто, тратит впустую память, таким образом апач использует номер MaxSpareServers для ограничения объема запасных процессов, которые это содержит в резерве для пакетов запросов.

MaxRequestsPerChild

Это ограничивает количество запросов, которые единственный процесс обработает в течение его времени жизни. Если Вы являетесь очень соответствующими об устойчивости, необходимо поместить фактический предел здесь для непрерывной переработки апачских процессов, чтобы препятствовать тому, чтобы утечки ресурсов влияли на систему.

StartServers

Это - просто сумма апача процессов, запускается по умолчанию. Установите это на обычный объем рабочих апачских процессов для сокращения времени прогрева системы. Даже если Вы проигнорируете эту установку, апач будет использовать значения Min-/MaxSpareServers для порождения новых процессов как требуется.

[еще 118] информация

См. также документация для многопроцессорных модулей апача .

5
ответ дан 30 November 2019 в 09:25
поделиться

Настройки по умолчанию являются вообще достойными начальными точками для наблюдения то, в чем приложениях действительно собирается нуждаться. Я не знаю, сколько трафика Вы ожидаете, таким образом предполагая MaxThreads, MaxClients, и MaxServers является немного трудным. Я могу сказать Вам, что большинство клиентов, с которыми я имею дело (работа для веб-хоста Linux, что соглашения главным образом с клиентами под управлением приложения Java в Tomcat) используют настройки по умолчанию в течение достаточно долгого времени без слишком многих необходимых тонких настроек.

, Если Вы не ожидаете много трафика, тогда эти настройки, являющиеся "слишком высоким" действительно, не должны производить Вас слишком много также. Apache, не собирающийся выделить ресурсы для целых 256 потенциальных клиентов, если это не становится необходимым. То же идет для Tomcat также.

1
ответ дан 30 November 2019 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: