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

Влияние расстояния от сервера на скорость загрузки страницы

Я измерил скорость загрузки файла статического изображения, отделенного nginx от моего сервера (с помощью службы pingdom). Обычно сервер обрабатывает этот запрос в течение нескольких секунд. Мой сервер находится в Далласе, штат Техас. Когда я использовал сервер pingdom Dallas, загрузка файла занимала 200 мс. Это включает в себя разрешение DNS и передачу данных. Очевидно, что для более длительной передачи потребуется больше времени; но на удивление это значение составило 800 мс для Нью-Йорка и 1,5 с для Амстердама.

Очевидный вывод - это роль расстояния для передачи данных от сервера к клиентской машине, и ничто не связано с производительностью моего сервера. Однако, когда я проверил эту разницу для основных веб-сайтов, таких как google и bing; разница составила всего 50% (например, 200 мс для США и 300 мс для Европы).

Есть ли что-то, что нужно улучшить на моем сервере для обработки междугородных запросов?

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

+1 к Chopper3, но я также хотел бы кое-что объяснить.

Географическое расстояние имеет меньшее отношение к передаче, чем вы думаете.

Что имеет значение:

  1. Пиринг вашего интернет-провайдера
  2. Пиринг их интернет-провайдера
  3. Маршрут между этими сверстниками
  4. формирование трафика

Пример 1. В моем университете мы получаем доступ в Интернет через государственного интернет-провайдера. У этого интернет-провайдера есть собственная сеть и коллег в Чикаго. Следовательно, чтобы подключиться к дому по дороге, необходимо проложить путь до Чикаго. Таким образом, гораздо быстрее общаться с чем-то в Чикаго, чем подключаться к чему-то в будущем.

Думаю, вам нужно думать об этом как о дорогах, а не как о прямых. То, что что-то ближе, не означает, что это действительно ближе через Интернет. Это также не значит, что он быстрее. С Интернетом это сильно преувеличено. Например, если один-единственный «бесплатный путь» между Далласом и Нью-Йорком перегружен, перелет из Европы в Даллас может быть быстрее.

Вам следует попробовать услуги CDN (сеть доставки контента). Это помогает уменьшить задержку для пользователей, находящихся далеко от сервера. Для получения дополнительной информации посетите веб-сайт maxcdn. Вы найдете необходимую информацию о вашей проблеме.

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

На первое влияет задержка, на второе - не так сильно.

Пример:

Если имеется 1000 небольших транзакций с задержкой 0,01 с каждая, вам понадобится 10 с для завершения транзакции. Постоянный коэффициент - это полезная нагрузка, разделенная на доступную полосу пропускания. «Локальная» задержка может быть в 10 раз меньше (задержка 0,001 с) -> 1 с для всей группы, что кажется достаточно быстрым для пользователя.

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

Итак, ответ таков: уменьшите количество TCP-транзакций, необходимых для доставки полезной нагрузки.

Насколько велик ваш тестовый файл?

Не забывайте, что эффект медленного запуска TCP означает, что задержка играет большую роль в замедлении начальных соединений.

Прочтите "Миф о широкополосной связи" в http://www.bookofspeed.com/chapter3.html

В наши дни в зависимости от того, какую версию вы используете, вы можете увеличить initcwnd как на сервере Linux, так и на сервере Windows, чтобы уменьшить некоторые эффекты задержки.

Имейте в виду, что одно изображение не является репрезентативным для всего сайта. Неизбежная трансатлантическая задержка повлияет на каждый загружаемый элемент в виде дополнительных 90 мс (YMMV) или около того, а не в процентах от каждого запроса. Это означает, что более крупные предметы не пострадают «хуже», чем более мелкие.

Помимо первого запроса, некоторые из ваших запросов будут выполняться параллельно (например, заемщик может загружать 3 или 4 изображения на ваш сайт и CSS одновременно), поэтому эти задержки будут меньше ощущаться пользователем.

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