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

Насколько надежны данные об ошибках сети с мобильных устройств?

Мы только начали использовать New Relic Mobile для нашего приложения для iOS и наблюдаем периодические всплески сетевых ошибок. В списке ошибок есть несколько понятных (отсутствие подключения к Интернету, тайм-аут, потеря связи). Прямо сейчас я списываю это на производительность мобильного интернета сетевых операторов (или ее отсутствие). Тот, который в списке сложнее объяснить, - это не удается найти хоста. Может ли устройство столкнуться с этой ошибкой, если интернет-сервис ненадежен? Во время этих всплесков на нашем веб-сайте для настольных компьютеров (на тех же серверах) не возникают такие же ошибки. В общем, мне интересно, насколько надежны данные об ошибках сети с мобильных устройств, если они подключены к менее надежному соединению.

Вероятно, что ненадежное сетевое соединение может привести к тому, что приложение отправит отчет cannot find host.

Типичное сетевое взаимодействие начинается с того, что приложение выполняет поиск в DNS. Если устройство считает, что сетевое соединение установлено, но пакеты на самом деле не проходят, приложение не получит никакого ответа на первый поиск DNS.

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

  • Все пакеты потеряны, ответа не получено
  • Возвращается сообщение об ошибке, указывающее, что DNS-сервер недоступен.
  • DNS достигнут, но по какой-то причине отказываются обрабатывать запрос
  • DNS-сервер обрабатывает запрос, но домен не существует
  • DNS-сервер обрабатывает запрос, но в домене нет записи указанного типа.

Если бы вам пришлось выбрать одно сообщение об ошибке, охватывающее все вышеперечисленное, трудно придумать что-то более наглядное, чем cannot find host.

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

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