На моем веб-сайте проходит очень много времени после ввода доменного имени и до того, как контент начинает отображаться.
Я предполагаю, что это как-то связано с разрешением DNS или сетями.
Как мне решить эту проблему? С чего начать и какие инструменты мне понадобятся? Я знаю, что мне понадобятся nslookup и traceroute. Что мне еще понадобится?
Во-первых, получите общее представление о том, что происходит, когда страница загружается с помощью Firebug расширение для Forefox. Я покажу вам точное количество времени, которое требуется для загрузки каждого компонента веб-страницы. Это даст вам первую подсказку о том, что именно вам нужно исследовать.
Если это действительно проблема DNS, одним из самых мощных инструментов отладки DNS является dig
. С +trace
вариант, он покажет вам все промежуточные шаги, необходимые для поиска домена, с указанием времени поиска для каждого шага.
Если это проблема с установлением TCP-соединения с веб-сайтом, вы можете сначала попробовать просто ping
Это. Если время приема-передачи велико, вы можете попробовать tcptraceroute
на порту 80, который использует TCP-пакеты вместо UDP (или ICMP), например, по умолчанию traceroute, чтобы увидеть, где задерживаются пакеты. Использование TCP позволит более точно воспроизвести обработку ваших пакетов в промежуточных сетях, некоторые провайдеры могут ограничивать трафик UDP (и полностью фильтровать ICMP - или фактически давать ему высокий приоритет, и тогда вы не увидите, что TCP работает медленнее).
Если время разрешения DNS короткое и RTT к серверу тоже, у него могут быть проблемы с емкостью ...
Сообщите нам доменное имя, и тогда мы сможем проверить, насколько быстр авторитетный DNS. Здесь есть два фактора:
Большинство авторитетных серверов должны иметь возможность дать ответ в течение нескольких миллисекунд, поэтому во многих случаях задержка в сети будет важнее, чем емкость DNS-сервера.
Если сам DNS-сервер хорошо подключен, это будет зависеть не только от скорости веб-сервера, но и от макета страницы.
Некоторые методы компоновки (определенные таблицы, ISTR) вызывают трудности для браузеров, потому что они не позволяют браузеру отображать страницу до тех пор, пока большая часть содержимого не будет загружена.
Предложение @ Moriarty о расширении Firebug хорошо подходит для просмотра DNS- и HTTP-запросов, но я не думаю, что оно решит потенциальную проблему плохого макета страницы.
Прежде чем копаться в сетях, анализировать пакеты и тому подобное, убедитесь, что это не зависит от браузера, установите новую копию Chrome и посмотрите, как это работает. Затем убедитесь, что он не зависит от машины, попробуйте его на других машинах в той же сети. Затем убедитесь, что он не зависит от сети, попробуйте его в Wi-Fi-кафе или в доме друга.
Если все еще идет медленно, у профессора Мориарти и Уиллама есть отличные места, где можно копнуть глубже. Это большая страница с длинной ТАБЛИЦЕЙ? Плагины? IFRAMES? Много javascript?
Вам нужно посмотреть на синхронизацию различных сетевых пакетов между вашим компьютером, DNS-сервером и веб-хостом (ами). Если вы используете прокси-сервер, вам необходимо проверить этот трафик.
Действительно хороший инструмент для этого - Wireshark.
Сравните время между поиском DNS, ответом, запросом веб-сервера (HTTP) и ответом веб-сервера. Типичная веб-страница состоит из множества отдельных частей, каждая из которых представляет собой запрос с вашего компьютера и ответ сервера. Проверьте ту же страницу с другого компьютера / сети, чтобы увидеть различия. Не забудьте очистить кеш DNS и браузера перед тестированием.
В самом деле, почему вы думаете, что это связано с DNS?
Вам следует ответить себе на следующие вопросы:
- Какая производительность оборудования? Есть ли у вас узкие места в оборудовании (например, низкая производительность жесткого диска)?
- Оптимальна ли у вас конфигурация apache? См. Максимальное количество клиентов, запросов на ребенка, оставайтесь в живых.
- Является ли файл php / etc. код оптимизирован?
Протестируйте конфигурацию apache с помощью ab.
Следите за использованием оборудования (ЦП, жесткий диск).
Если это так, используйте балансировщики нагрузки (HAproxy) и несколько веб-серверов.