Почему HTTP / 1.1 рекомендует быть осторожным с открытием соединений? - PullRequest
0 голосов
/ 03 декабря 2018

В HTTP / 1.0 раньше было рекомендовано ограничение в 2 подключения на домен.Более поздние HTTP RFC ослабили это ограничение, но все же предупреждают о необходимости быть осторожными при открытии нескольких соединений:

Согласно RFC 7230, раздел 6.4, «клиент должен ограничивать количество одновременных открытых соединений, которые онподдерживает данный сервер ".

В частности, в наши дни, помимо HTTP / 2, браузеры налагают ограничение на количество доменов в 6-8 при использовании HTTP / 1.1.Из того, что я читаю, эти рекомендации предназначены для улучшения времени отклика HTTP и предотвращения перегрузки.

Может ли кто-нибудь помочь мне понять, что произойдет с перегрузкой и временем отклика, если много подключений будет открыто доменом?Это не похоже на проблему с сервером HTTP, так как количество соединений, которые они могут обработать, похоже на детали реализации.Вышеприведенное объяснение говорит о производительности TCP?Я не могу найти более точных объяснений того, почему клиенты HTTP ограничивают количество соединений на домены.

1 Ответ

0 голосов
/ 04 декабря 2018

Основная причина этого - ресурсы на стороне сервера.

Представьте, что у вас есть сервер, на котором работает Apache с 256 рабочими потоками по умолчанию.Представьте, что на этом сервере размещена страница индекса, на которой размещено 20 изображений.Теперь представьте, что 20 клиентов одновременно подключаются и загружают страницу индекса;каждый из этих клиентов закрывает эти соединения после получения страницы.

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

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

...