воскресенье, 24 июля 2011 г.

Проверка web сервера

Современный ИТ специалист, должен обладать достаточно хорошим кругозором, а так же способностью решать задачи самостоятельно. Имея полную картину происходящего, мы сможем решать задачи более качественно и продуктивно.
Сегодня мы рассмотрим простой случай – у вас не открывается web сайт. Неважно внешний или внутренний. Прежде чем писать это как баг или писать в поддержку: «НИЧЕГО НЕ РАБОТАЕТ, НЕ МОГУ РАБОТАТЬ», предлагаю самим понять, в чем же дело.

Если сайт называется, к примеру, test.ru, и он у вас не открывается (именно не доступен, а не доступ запрещен или нет запрашиваемого контента), предлагаю следующую последовательность действий:
  1. Проверить наличие подключения к сети. Возможно, ваш сосед или уборщица, просто выдернули сетевой кабель из Вашего компьютера. А так же проверить наличие доступа в интернет (если вы проверяете внешний ресурс) - работает ли внешний сайт, например, ya.ru или cisco.com.
  2. Запрашиваемое имя сайта - это удобство для пользователя, для машины нужен его точный адрес. За соответствие сетевого адреса (ip адрес) к имени, отвечает dns сервер. Поэтому вам необходимо понять, работает ли ваш dns сервер. Для этого пишем в командной строке (cmd) “nslookup test.ru”. Если в ответ вам выдаст ip адрес этого сайта (например 192.168.1.100), значит dns сервер работает. В дальнейшем для выяснения причин лучше пользоваться сразу ip адресом.
  3. Старый, добрый ping, так же в командной строке: «ping 192.168.1.100». Таким образом, мы посылаем icmp пакеты (особый вид пакетов в стеке протокола tcp/ip) до нашего хоста. В процессе пинга, машина нам выдает результат-время отклика. Если результат не выдается, это означает, что icmp пакеты не проходят до нашего хоста и обратно. В Windows посылается 4 пакета, после чего выдается результат. Для unix, по умолчанию, посылаются пакеты, пока сами не остановим командой Ctrl+C. Если мы хотим сделать тоже самое для windows, добавляем ключик «-t», например: «pingt 192.168.1.100». В Unix ping имеет гораздо большие возможности, можно указать не только размер пакетов (в windows тоже можно), но и источник, т.е. с какого ip адреса пинговать. Информацию по ключам можно найти в интернете или man ping.
  4. Если пинг проходит, то идем к следующему пункту, если нет, тогда возможны варианты. Либо icmp пакеты запрещены, тогда проверяем работу самого веб сервера хоста test.ru. (для этого читаем следующий пункт). Либо у нас действительно нет связи. Возможно, между нами и сайтом произошел разрыв сети. Чтобы выяснить где именно трассируем маршрут: «tracert 192.168.1.100» для windows, «traceroute 192.168.1.100» для unix. Трассировка показывает маршрут следования до пункта назначения test.ru. Если после, какого то из роутеров, идут только значки «*» значит именно в этом месте разрыв. Часто роутеры на маршруте не показывают вам время отклика, это не страшно, это означает, что местный администратор запретил выдавать время отклика, сам же роутер свою функцию исправно выполняет.
  5. На этом этапе мы выполним проверку работы web сервера. Для этого нам необходимо узнать доступность порта web сервера. Обычное http соединение использует 80 порт. По сути вы можете проверить не только веб, но и много других портов RDP, DNS, SSH итд. Чтобы проверить доступность порта пишем «telnet <номер порта> 192.168.1.100». Если у нас открывается черный экран или приветствие – значит, порт открыт и приложение запущенно. Стоит оговориться, что данный метод подходит для tcp соединений. Если у вас UDP такой метод работать не будет, т.к. данный тип соединения не устанавливает соединение.
  6. Если web порт открыт, дальше уже надо смотреть в самом web сервере. Запущено ли приложение, что пишет log файл этого web сервера итд. Так как сервер находится уже за пределами вашей зоны ответственности, то вы должны написать письмо в техподдержку данного сервиса с указанием вашей проблемы. Если вы напишете, что ping проходит, порт открыт, но web сервер не выдает желаемого результата, то вы как минимум вырастите в глазах тех. поддержки (вас вряд ли попросят перезагрузить компьютер), как максимум тех. поддержка быстрее решит проблему.
В заключении хочу пожелать всем вам – старайтесь всесторонне взглянуть на проблему, развивайтесь не только в глубину, но и в ширину, совершентстуйтесь.
Для удобства вышеизложенного удобно воспользоваться диаграммой:

3 комментария:

  1. Отличная статья! Дмитрий, большое спасибо за такой полезный материал!

    ОтветитьУдалить
  2. Спасибо,
    Коллеги, хотелось бы знать - какие статьи вам были бы интересны, что хотелось бы обсудить?
    Пишите нам в твиттер или в личку.

    ОтветитьУдалить
  3. Вот пример. Пинга нет. nslookup выдает какие-то ipишники. На деле сайт открывается по ip 192.168.KK.LL. Почему разные ip-шники?

    C:\Users\ilyubin>ping http://
    Ping request could not find host http://. Please check the name and try again.

    C:\Users\ilyubin>nslookup
    Server: UnKnown
    Address: 156.154.XX.YY

    Non-authoritative answer:
    Name: http://
    Address: 92.242.AA.BB

    В чем проблема?

    ОтветитьУдалить