Почему Nginx намного быстрее, чем Apache в этой среде?

У нас есть веб-приложение с Java-бэкендом и внешним сервером tomcat. Перед котом стоит апач. Оба они на одном хосте. Бэкэнд находится на другом хосте. Веб-браузеры взаимодействуют с Apache/Tomcat с помощью вызовов Rest. Клиентское приложение использует много параллельных вызовов API.

Хотя мы проводим тест производительности на Apache с использованием большого числа параллельных соединений TCP (~300), браузеры не могут / очень медленно загружать клиентское js-приложение.

Мы перепробовали много настроек prefork/worker /maxclients. Никто из них не помог.

После того, как мы временно заменили Apache на Nginx, эта проблема была немедленно решена. Nginx кажется хорошей альтернативой, но Apache будет лучше в этой среде. Кто-нибудь знает, что имеет значение?

Процессор / память / сеть не могут быть узким местом.

Интересно, что jmeter выдает такой ответ на множество запросов: Код ответа не HTTP: java.net.SocketTimeoutException Код ответа не HTTP: javax.net.ssl.SSLHandshakeException. Конечно, есть много 200 для этого типа запросов.

Благодарю.

1 ответ

Это из-за различий в архитектуре. Nginx - это легкий асинхронный (неблокирующий) прокси. Apache - полнофункциональный веб-сервер.

В то время как apache должен проверять и читать дополнительные файлы (.htaccess) по каждому запросу, выполнять все фильтры и обработчики (переписывать и т. Д.), Nginx просто передает байты между клиентом и сервером (возможно, изменяя заголовки)

Другие вопросы по тегам