Постоянные TCP-соединения, длинные тайм-ауты и IP-прыжки мобильных устройств

StackOverflow https://stackoverflow.com/questions/3970020

Вопрос

У нас есть приложение с длинной схемой опроса по HTTP (хотя этот вопрос может применяться к любому протоколу на основе TCP). Наше время ожидания достаточно высоки, 30 минут или около того.

Иногда мы видим, - это мобильные устройства Hop от IP-IP справедливо часто, каждую минуту или около того, и это вызывает десятки длительных розетков, чтобы накапливаться на сервере. Не могу не думать, что это вызывает больше нагрузки, чем необходимо.

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

  • Уменьшить тайм-аут (увеличивая срок службы батареи на устройстве)
  • Закройте последнее активное соединение Когда пользователь воссоединяется (требует отслеживания файла cookie или ID пользователя)

Любые другие?

Это было полезно?

Решение

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

Другая проблема, в которой вы можете запустить, даже если пользовательское оборудование не включает в себя адреса, некоторые мобильные сети и, возможно, вы владеете, могут иметь штатный брандмауэр, который очистит неиспользуемые сокеты, что приведет к тому, что проблемы со связью будут Требуется снова Syn / Syn-Ack. Просто то, что нужно помнить, если вы замечаете проблемы со связью.

Если вы решите сыграть с помощью ALVE, пожалуйста, не будьте слишком агрессивными, Chatty Applications - это чума мобильных сетей, и те, которые могут забивать сеть, когда она проигрывает подключение к серверу, может вызвать все виды проблем для сети ( И вы, если перевозчик ловит). По крайней мере, иметь своего рода обратный механизм для повторного взыскания подключения, и, возможно, даже попытаться выяснить, почему устройство переключает IP-адреса каждую минуту. Если он функционирует правильно, что не должно происходить.

*** Я работаю на мобильный оператор в Канаде, однако, мои комментарии не отражают позицию моего работодателя.

Другие советы

Если вы можете, включите TCP Keepalive на розетки и дайте им довольно низкий таймер (например, каждые 1-5 минут). До тех пор, пока вы читаете с сокета, вы обнаружите недоступенчамо быстрее - и с меньшим использованием ресурсов на телефоне, чем уменьшение 30-минутного времени приложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top