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

Почему локальные запросы не выполняются почти мгновенно?

Это чисто из любопытства, но с каждым локальным сервером, который я когда-либо настраивал, всегда была задержка 0,5–2 секунды до отображения страниц.

В качестве примера я установил полностью пустой сервер ubuntu, на котором запущены apache, mysql и php. Если у меня есть файл с phpinfo (); in и запросите, чтобы с машины, расположенной буквально рядом с сервером, страница все равно загружалась через секунду или две. Почему это не [почти] мгновенно?

Обе машины работают с четырехъядерными процессорами, оперативной памятью 8 ГБ и т. Д. С использованием гигабитного коммутатора. Почему простой запрос, такой как phpinfo, так долго «выполняется»?

На время, необходимое для его отображения, может влиять ряд факторов. Если код вообще есть, его все равно нужно интерпретировать и запускать. Поиски DNS все еще происходят, поэтому в этом есть задержка (если у вас нет всех поисков локального хоста). Отрисовка браузером. Накладные расходы протокола.

Если вам интересно, вы можете запустить wirehark и увидеть сетевую часть накладных расходов на поиск и протокол.

Все остальное будет зависеть от времени, которое требуется серверу для обработки запроса, а вашему клиенту для обработки ответа.

1.) Первое попадание на сервер и первый вызов рассматриваемого скрипта PHP фактически вызывают анализ ряда конфигураций, загрузку интерпретаторов (возможно), загрузку скриптов, переход модулей на веб-сервере в оперативный режим и т. Д. последующие запросы почти всегда быстрее.

2.) Даже в идеальных условиях в течение 0,5 - 2 секунд задействовано несколько движущихся частей - между тем, как ваш компьютер выполняет настройку нескольких сеансов TCP (каждый требует нескольких миллисекунд подтверждения связи), ваш браузер идентифицирует себя и работает. Из-за возможностей сервера ваш браузер, наконец, отправляет свой запрос, а затем серверу необходимо проанализировать эту информацию и передать ее вверх и вниз по стеку, чтобы затем, наконец, отформатировать ее в HTML для отправки обратно вам.

В реализации современных скриптовых / веб-платформ есть немало изощрений. Это может показаться немного тяжелым по сравнению с проверкой связи с сервером или выдачей статического сообщения «Hello world!» html, но общие возможности впечатляют.

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

Попробуйте выполнить тест с помощью ab:

ab -c 1 -n 1 http://your.server/page/

phpinfo () использует некоторые ресурсы и занимает некоторое время, а рендеринг в браузере тоже занимает некоторое время. Обслуживание статической (короткой) html-страницы заняло у меня 5 мс в гигабитной локальной сети.

PS: современные браузеры очень медленные: /