Постоянные TCP-соединения, длинные тайм-ауты и IP-прыжки мобильных устройств
-
09-10-2019 - |
Вопрос
У нас есть приложение с длинной схемой опроса по HTTP (хотя этот вопрос может применяться к любому протоколу на основе TCP). Наше время ожидания достаточно высоки, 30 минут или около того.
Иногда мы видим, - это мобильные устройства Hop от IP-IP справедливо часто, каждую минуту или около того, и это вызывает десятки длительных розетков, чтобы накапливаться на сервере. Не могу не думать, что это вызывает больше нагрузки, чем необходимо.
Поэтому я предполагаю, что некоторые IP-шлюзы лучше других при закрывающих соединениях, когда устройство прыгает. Стратегии, которые я могу думать о том, чтобы иметь дело с этим:
- Уменьшить тайм-аут (увеличивая срок службы батареи на устройстве)
- Закройте последнее активное соединение Когда пользователь воссоединяется (требует отслеживания файла cookie или ID пользователя)
Любые другие?
Решение
Я бы посмотрел на закрытие последнего активного соединения с помощью файла cookie или какой-то идентификатор в вашем сервере. Да, это больше работы, но как только пользователь подпрыгивает адреса, вы можете найти старый розетк и убирать ресурсы. Это должно быть довольно легко связать с именем пользователя или что-то в этом роде.
Другая проблема, в которой вы можете запустить, даже если пользовательское оборудование не включает в себя адреса, некоторые мобильные сети и, возможно, вы владеете, могут иметь штатный брандмауэр, который очистит неиспользуемые сокеты, что приведет к тому, что проблемы со связью будут Требуется снова Syn / Syn-Ack. Просто то, что нужно помнить, если вы замечаете проблемы со связью.
Если вы решите сыграть с помощью ALVE, пожалуйста, не будьте слишком агрессивными, Chatty Applications - это чума мобильных сетей, и те, которые могут забивать сеть, когда она проигрывает подключение к серверу, может вызвать все виды проблем для сети ( И вы, если перевозчик ловит). По крайней мере, иметь своего рода обратный механизм для повторного взыскания подключения, и, возможно, даже попытаться выяснить, почему устройство переключает IP-адреса каждую минуту. Если он функционирует правильно, что не должно происходить.
*** Я работаю на мобильный оператор в Канаде, однако, мои комментарии не отражают позицию моего работодателя.
Другие советы
Если вы можете, включите TCP Keepalive на розетки и дайте им довольно низкий таймер (например, каждые 1-5 минут). До тех пор, пока вы читаете с сокета, вы обнаружите недоступенчамо быстрее - и с меньшим использованием ресурсов на телефоне, чем уменьшение 30-минутного времени приложения.