Назад | Перейти на главную страницу

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

У нас есть веб-приложение с бэкэндом java и внешним сервером tomcat. Перед котом стоит Apache. Оба они находятся на одном хосте. Бэкэнд находится на другом хосте. Веб-браузеры взаимодействуют с 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.

Спасибо.

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

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