Обслуживает ли процесс Apache, обрабатывающий прокси-сервер Websocket, один и тот же клиент для http?

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

Итак Насколько я понимаю внутреннее устройство Apache, я считаю, что процесс или поток Apache будут поддерживаться в течение всего сеанса Websocket, проксируя соединение с помощью mod_proxy_wstunnel; Будет ли этот же процесс обрабатывать и традиционные клиентские HTTP-запросы? Или еще один процесс будет потрачен впустую отправлять эти запросы по мере их поступления?

2
задан 1 September 2016 в 07:21
1 ответ

Все зависит от того, как разработано ваше веб-приложение. Вы действительно можете передавать «традиционные HTTP-запросы» через установленный веб-узел ... или можете обрабатывать запрос более традиционным методом. К сожалению (с точки зрения системного инженера) разработчики ленивы ... и редко прикладывают усилия, необходимые для передачи основной части трафика через установленный веб-узел. Чаще он используется для объявления "обновлений" различных битов на странице ... и работы по извлечению данных изображения и всего остального, оставлено более типичным GET и POST.

Короче ... да. .. вы свяжете 1 процесс в течение времени жизни каждого веб-сокета ... и 1 соединение для каждого запроса. Тем не менее, вы можете использовать средства проверки активности соединения, чтобы повторно использовать одно и то же соединение снова и снова ... но это может повлиять на общее время загрузки страницы, так как вы должны ждать, пока каждый элемент будет отправлен последовательно, а не параллельно.

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

Несмотря на всю тонкую настройку, которую вы можете сделать в Apache ... иногда это не идеальный инструмент для работы. Apache - это швейцарский армейский нож в ящике для инструментов. Он разработан как самый динамичный инструмент в наборе инструментов. Nginx более оптимизирован и не включает в себя пинцет или ножницы, которые вы найдете в apache-knife ... а nodejs - это просто нож для масла. Иногда (когда позволяет окружающая среда) лучше сочетать и сочетать, чтобы получить все преимущества.

2
ответ дан 3 December 2019 в 11:31

Теги

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