У меня на одном из объектов информация об операциях на удаленных точках в онлайне передается в БД путем обыкновенных запросов к веб-серверу. (Так нужно было). При этом на большинстве точек единственно возможным каналом связи является сотовая связь (GPRS). Понятно, что в общей скорости работы такой канал является самым "узким" местом.
Для того, чтобы "выжать" из него максимум, имеем следующие возможности:
- Выбрать одного из трех операторов мобильной связи (впрочем, у некоторых счастливчиков их больше).
- Определить место размещения веб-сервера, который принимает запросы от удаленных объектов - это может быть сервер, предоставленный хостинговой компанией или свой собственный сервер
- В случае использования сервера хостинга - выбрать этот самый хостинг
- В случае использования своего собственного сервера - выбор интернет-провайдера, который обеспечит нам связь.
Данные условия необходимо рассматривать во взаимосвязи. Сравнивать два хостинга имеет смысл не абстрактно, а путем измерения скорости ответов непосредственно на том компьютере, откуда будут направляться запросы. Даже формально "более медленный" хостинг может показать худшие результаты например в случае, если он предоставлен тем же провайдером, что и канал связи.
При условии, что сами по себе запросы относительно небольшие, по сути все, что нам требуется - получать ответ максимально быстр. Разумеется это "максимально быстро" должно быть еще и "максимально стабильно". То есть тестирование необходимо проводить в течение длительного време
С таким заявленными функциям существует много программ и веб-сервисов, но почему-то ничего подходящего я не нашел:
- или тестируется тупо скорость соединения (скачивание большого количества информации). В моем случае совершенно не показательно, т.к. запросы и ответы на них очень маленькие (несколько сотен а то и десятков байт)
- тестируется "пинг". По момему такие тесты годятся только для того, чтобы определить отсутствие связи (но не наоборот - не однократно встречал ситуацию. когда пинг отличный, а связи нет).
- большинство тестов - "мгновенные". Это приятно конечно, когда результат получаешь сразу, но такой результат ни о чем не говорит. Так как через 5 минут он может оказаться совершенно другим.
- нет нормального анализа результатов. Среднее время ответа в 1 сек может означать, что ответ занял по 1 сек на каждый из 10 запросов, или 8 запросов по 0,1 сек и 2 запроса по 4,6 сек. - это очень существенно.
В итоге написал обработку, которая и решает вышеуказанные задачи. При этом:
- Никаких синтетических показателей. Делаем самые что ни на есть обыкновенные http запросы. Можно запрашивать файлы как по фиксированному списку, так создавать запросы на основании имеющегося справочника. Например, если в конфигурации есть справочник "номенклатура", то можно перебирать справочник и делать запросы вида http://mysite.com/catalog/item.php?code=[код номенклатуры].
- Обработка предназначена для сбора статистики в течение длительного времени. Для этого настраиваем расписание работы. Например, можно настроить расписание с 9 до 18 по рабочим дням в течение недели. Можно настроить несколько расписаний и получить отдельные результаты по рабочим дням и по выходным.
- Результаты работы сохраняются в обычном текстовом файле, который можно загрузить в Excel или использовать любую программу для статистического анализа.
- Кроме того, обработка предоставляет возможность формирования 2 диаграмм - частотной (распределение скорости ответов по частоте) и временная (распределение скорости ответов по времени). На диаграммах можно сравнить результаты нескольких тестов.
- Обработка может использоваться в любой конфигурации.
А вот теперь немного примеров использования обработки:
Внимание! Эти результаты приведены в качестве примера использования обработки и справедливы только для конкретного места, где проводилось измерение, кроме того они могут изменяться во времени. (Установка операторами новых базовых станций или открытие рядом офиса крупной компании где у большинства сотрудников телефона на корпоративном контракте одного из операторов). На надо экстраполировать их на всю Россию. Проводите измерение в конкретном интересующем Вас месте.
Сравним двух операторов: МТС и Мегафон
Это - интервальная диаграмма, показывает как распределяется время на получение ответа сервера по частоте.
В данном случае:
При подключении через оператора МТС 60% ответов уложились в 1,6 сек. У Мегафона за этот интервал времени пришло только 6% ответов. Большая часть ответов (опять же 60%) пришла через Мегафон в интервале 1,59-2,41 сек.
Некоторый процент запросов обрабатывался длительное время (более 8,81 сек.) У Мегафона таких оказалось меньше. То есть, время ожидания ответа хотя и выше, чем у МТС, но более стабильно.
Запросов, на которые ответы вообще не пришли, при работе через МТС оказалось около 1%, а при работе через Мегафон - около 4%.
Проанализируем работу через оператора Мегафон в течение дня
Эта диаграмма состоит из двух частей. Сверху отбражается время обработки запросов. Тонкая черта соединяет абсолютные минимум и максимум. Так, в интервале 10.00-10-30 это время колебалось в интервале от ~2-53 сек. Толстый прямоугольник показывает, интервал времени, в который уложился выбранный процент (в данном случае - 70) запросов. Этот интервал составил ~ 2,2-4,5 сек.
Снизу отображается количество запросов, оставшихся без ответа. Как видим, пик пришелся на 10.00-10.30 (~44 запроса).
В целом результаты вполне понятны - наибольшая загрузка в момент начала рабочего дня, и чуть большая - после обеда.
Однако, выводы делать рано - ведь кроме оператора связи на скорость обработки запросов влияет хостинг. А наш график был построен на основании тестирования в течение 2х дней, первый день хостинг был один, второй день другой.
Сравним два хостинга
Диаграмма аналогична предыдущей. Как видим, большой процент ошибок в интервале 10.00-10.30 целиком "на совести" хостинга aha.ru. А вот колебания увеличения процента времени ответов уже на совести оператора.
А таки диаграмма нам однозначно показывает, что, по крайней мере при работе через оператора Мегафон хостинг nichost.ru с точки зрения времени ответа сервера предпочтительнее.