Веб-разработчики: ошибки «сброса соединения» в AT & T 3G, нигде - PullRequest
3 голосов
/ 31 августа 2011

Мы поддерживаем серверное приложение отчетности для клиента.На одной странице отчетов в центре страницы есть несколько тяжелых обращений к базе данных, в результате чего страница обрабатывается в течение 5-10 секунд.

Проблема: При доступе к странице через iPadчерез AT & T 3G страница успешно загружается примерно в 50% случаев.Однако иногда Mobile Safari отображает верхнюю половину страницы, а затем выдает ошибку «Сброс соединения с сервером».

Справочная информация

  1. Если выпереключить iPad с 3G на широкополосное Wi-Fi соединение, страница работает 100% времени
  2. Страница работает 100% времени на моем Verizon iPhone через 3G
  3. Страница работает 100% времени по широкополосной связи, независимо от устройства или браузера - ПК, Mac, телефон, iPad и т. д.
  4. Страница не особенно тяжелая.Общий вес всех ресурсов составляет 108 КБ (440 КБ без сжатия)
  5. Даже при использовании AT & T 3G другие страницы на сайте отчетов загружаются правильно 100% времени.
  6. Первоначально база данных вызываетпотребовалось 10 + сек, и проблема iPad + AT & T 3G возникала в 100% случаев.Некоторые простые оптимизации позволили сократить количество вызовов до 5-10 секунд, и теперь мы видим это примерно в 50% случаев.
  7. Серверная платформа - IIS6
  8. Новая информация В журнале IISВ файлах «неудачный» запрос страницы (который приводит к ошибкам «сброса соединения» в Mobile Safari) выглядит как обычный HTTP-запрос с кодом результата 200 (успех)
  9. Новая информация Ориентировочно, похоже, что эта проблема не возникает в Opera Mini на iPad.Это сбивает с толку, так как это кажется проблемой сети AT & T.Я говорю «предварительно» здесь, потому что мы не можем исключить это.В настоящее время у нас есть стажер, обновляющий страницу в Opera и замечающий любые ошибки.:)
  10. Новая информация Мы сделали несколько быстрых оптимизаций для этого запроса базы данных за 5-10 секунд.Теперь пауза больше похожа на 3-5 секунд вместо 5-10 секунд.В результате, ошибка «сброса соединения» в Mobile Safari теперь происходит примерно в 10% случаев, а не в 50%.

Так что теперь я не уверен, что и думать.Если это проблема с сетью, почему работает Opera Mini, а не Mobile Safari при прочих равных условиях?Но тогда ... если это проблема Mobile Safari, почему Mobile Safari работает нормально по широкополосному соединению + Wi-Fi?

Использует ли Mobile Safari различные настройки тайм-аута в зависимости от того, работает ли он по широкополосному или Wi-Fi?Я не знаю, если это .... это то, что он делает или нет.

Чтобы наградить баллы, я думаю, что я ищу ответ, который конкретно касается одного или обоих из следующих вопросов(1) Изменяет ли Mobile Safari свои настройки тайм-аута в зависимости от типа активного в данный момент сетевого подключения (2) Существует ли какая-то известная особенность прокси-серверов AT & Ts, которые работают раздражительно и разрывают соединения, которые простаивали в течение нескольких секунд?Например: «Да, они прервут неактивное соединение через 4,25 секунды»

Ответы [ 4 ]

3 голосов
/ 02 сентября 2011

Я думаю, что короткий ответ - ненадежные соединения для передачи данных 3G Отчасти это связано с физикой - она ​​никогда не может быть столь же надежной, как проводное соединение - и частично с играми, в которые играют операторы.

Почти все операторы используют прозрачные прокси-серверы с разной степенью поломки.

Я не могу точно сказать, что делает AT & T, но я могу перечислить несколько вещей, которые я видел от клиентов моего приложения (которое обращается к веб-службе REST):

  • Усеченные строки параметров
  • 500 ошибок в длинных строках параметров
  • Случайные 503 ошибки
  • Случайные ошибки 403
  • Код возврата 200 с ошибкой, возвращаемой либо в XML, либо в текстовой форме (т. Е. Невозможно отличить ошибку от веб-службы и прокси-сервера, не пытаясь проанализировать сообщение. Конечно, вы не знаете, что формат сообщения)
  • Спорадически медленные соединения
  • Частичные загрузки (без ошибок)

Долгое время я предполагал, что это скрытая ошибка в моем коде, но потом попробовал мое приложение на телефоне на Vodafone, а не на O2 ...

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

  • Более терпимо к странным или неожиданным ошибкам
  • Сократить строки параметров (я не контролирую веб-сервис, так что это сложно!)
  • «Набрать обратно» производительность, если я получаю слишком много ошибок (например, запрашивать меньше записей в каждом запросе)
  • Старайтесь не заставлять конечных пользователей иметь дело с причудливыми ошибками, с которыми они, практически говоря, ничего не могут поделать

Я думаю, что последний пункт является наиболее важным, хотя, к сожалению, это невозможно сделать в 100% случаев.

1 голос
/ 03 сентября 2011

Я подозреваю, что проблема не в Safari, а в 3G-маршрутизаторах и прокси AT & T. Мне удалось избежать подобных проблем, переключившись на HTTPS, который, по-видимому, предотвращает буферизацию AT & T и помогает избежать ложных перезагрузок соединения.

Я предполагаю, что AT & T играет в игры со своей сетью, чтобы сбалансировать нагрузку или предотвратить другие проблемы с пропускной способностью, и это, вероятно, по какой-то причине портит ваши конкретные данные.

1 голос
/ 03 сентября 2011

Вы должны прочитать эту статью о том, почему у вас проблемы при подключении через сеть AT & T 3G.

А насчет Opera Mini ... Что ж, Opera использует эту прокси-подобную технику для передачи всех данных через свои собственные серверы, сжатия и последующей отправки вам. Это приводит к уменьшению трафика с вашего мобильного устройства и, следовательно, к сокращению времени загрузки.

Вы ничего не можете сделать, кроме сжатия вывода и оптимизации всего для скорости - даже замена двойных кавычек на одинарные (извините, я PHP-кодер, не знаю, то же самое в ASP) делает Смысл здесь. С сегодняшними широкополосными подключениями - никого на самом деле это не волнует, но мобильная связь еще не настолько развита, и это возвращает нас к эпохе коммутируемых модемов, когда речь заходит о методах оптимизации.

0 голосов
/ 08 сентября 2011

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

Вот статья, которая объясняет, как включить шаблон непрерывной прокрутки в ASP.NET с JavaScript:

http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=371

А вот еще один хороший пример, который использует jQuery:

http://www.eggheadcafe.com/tutorials/aspnet/b8381915-06d9-4538-b4bb-5ac2a8e73f34/implementing-continuous-scrolling-ui-pattern-in-aspnet.aspx

Надеюсь, это поможет.

...