Диагностическая утилита ping была написана Майком Муусом (ftp.arl.mil/~mike/ping.html) в декабре 1983 г. (еще до изобретения протокола HTTP) как инструмент для выявления проблемных мест в IP-сетях. За 23 года эта программа практически не изменилась: она по-прежнему использует для замера скорости прохождения пакетов в сети сигнальный протокол ICMP. Протокол ICMP предназначен для передачи по сети сигнальных сообщений, в основном, сообщений об ошибках.
В наши дни программа ping входит в комплект большинства операционных систем. Маленькая утилита стала широко известна и теперь повсеместно используется не по назначению. Например, ее используют для оценки скорости доступа к серверу. Но ведь программа предназначена вовсе не для этого. Давайте разберемся, что именно показывает ping.
Программа показывает суммарное время, которое затрачивает сигнальный пакет ICMP для того, чтобы достигнуть точки назначения и вернуться обратно в виде отклика. Казалось бы, пинг указывает на качество связи. Да, но с одной очень важной оговоркой. Нужно учитывать, что информация с веб-сервера загружается в браузер пользователя по HTTP, с использованием протокола TCP, а вовсе не сигнального протокола ICMP. Протокол TCP - это рабочий протокол, который реально используется различными приложениями. Именно время отклика по HTTP является действительно важной характеристикой, позволяющей судить о скорости работы сервера. Измерение сигнального ICMP-пинга в этом смысле совершенно не показательно. Дело в том, что пинг по HTTP и пинг по ICMP - это абсолютно разные показатели.
Рассмотрим реальные примеры, в которых для оценки ICMP-пинга использовалась обычная программа linux ping, а HTTP-ответы измерялись с помощью утилиты httping (www.vanheusden.com/httping). Утилита httping отличается тем, что посылает не сигнальные, а реальные запросы HEAD, и уже по ним замеряет время отклика от сервера (страницы целиком не скачиваются). Это более объективный параметр, который позволяет реально оценить доступность сайта.
Измерения производились 3 октября 2006 г. в 13:00 с сервера, расположенного в Минске на незагруженном 10-мегабитном канале. Мы запустили тест для двух сайтов: Google.de и Yahoo.de. Для каждого из них сначала указывается результат работы обычной утилиты ping, а затем - результат работы утилиты httping.
GOOGLE.DE root@debian [~] # ping google.de PING google.de (72.14.221.104): 56 data bytes 64 bytes from 72.14.221.104: icmp_seq=0 ttl=243 time=21.993 ms 64 bytes from 72.14.221.104: icmp_seq=1 ttl=243 time=21.960 ms 64 bytes from 72.14.221.104: icmp_seq=2 ttl=243 time=21.997 ms 64 bytes from 72.14.221.104: icmp_seq=3 ttl=243 time=22.603 ms - google.de ping statistics -- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 21.960/22.138/22.603/0.269 ms
root@debian [~] # httping -g http://google.de PING google.de:80 (http://google.de): connected to google.de:80, seq=0 time=111.20 ms connected to google.de:80, seq=1 time=103.57 ms connected to google.de:80, seq=2 time=157.58 ms connected to google.de:80, seq=3 time=134.55 ms - http://google.de ping statistics -- 4 connects, 4 ok, 0.00% failed round-trip min/avg/max = 103.6/126.7/157.6 ms
YAHOO.DE root@debian [~] # ping yahoo.de PING yahoo.de (217.12.3.11): 56 data bytes 64 bytes from 217.12.3.11: icmp_seq=0 ttl=241 time=30.079 ms 64 bytes from 217.12.3.11: icmp_seq=1 ttl=241 time=32.061 ms 64 bytes from 217.12.3.11: icmp_seq=2 ttl=241 time=31.993 ms 64 bytes from 217.12.3.11: icmp_seq=3 ttl=241 time=42.888 ms - yahoo.de ping statistics -- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max/stddev = 30.079/34.255/42.888/5.047 ms
root@debian [~] # httping -g http://yahoo.de PING yahoo.de:80 (http://yahoo.de): connected to yahoo.de:80, seq=0 time=78.78 ms connected to yahoo.de:80, seq=1 time=76.46 ms connected to yahoo.de:80, seq=2 time=94.78 ms connected to yahoo.de:80, seq=3 time=75.81 ms - http://yahoo.de ping statistics -- 4 connects, 4 ok, 0.00% failed round-trip min/avg/max = 75.8/81.5/94.8 ms
Как видно из примеров, сайт Google.de с меньшим ICMP-пингом показал большее время HTTP-ответа, то есть с большей задержкой выдавал веб-страницы.
Такая ситуация встречается повсеместно. Чем она объясняется? Причин много:
Миф о том, что пинг до сервера является показателем эффективности хостинга на этом сервере, не имеет под собой абсолютно никаких оснований. ICMP-пинг никак не может дать реальное представление о работе будущего сайта. Для объективной оценки нужно учесть целый ряд других параметров. Некоторые из этих параметров учитывает утилита httping, которую можно рекомендовать в качестве более объективной альтернативы ping.
Кроме httping, для дополнительной оценки эффективности работы серверов Apache по протоколу HTTP предназначена специальная утилита ab (httpd.apache.org/docs/2.0/programs/ab.html). Она показывает, в том числе, сколько одновременных запросов способен выдержать сервер. Существуют и другие специальные инструменты для оценки работы веб-серверов. Например, бесплатная тестовая служба NetMechanic (www.netmechanic.com/products/SCP_FreeSample.shtml) измеряет скорость загрузки информации с сервера каждые 15 минут в течение восьми часов, а затем присылает по почте подробный отчет. Другой сервис Speed-Meter (www.tracert.com) тщательно тестирует скорость работы веб-сервера, обращаясь к нему из разных уголков мира. Это уже ближе к реальной оценке качества хостинга, чем глупое баловство с пингом по сигнальному протоколу.
Анатолий АЛИЗАР
Материал подготовлен при содействии хостинг-провайдера "Экстмедиа"