Как решить проблемы тайм-аута, вызванные плохим постоянным соединением HTTP?

Недавно я боролся с проблемой тайм-аута HTTP. После более чем одного месяца расследования я вполне уверен, что это вызвано плохими постоянными соединениями HTTP. Детали следующие:

Это приложение для iOS.Большинство пользователей используют iOS 8.я используюNSURLConnection.iOS 8 имеет одинизвестенkeep alive ошибка но мой другой вопрос. Более конкретно, эта ошибка вызываетNSURLErrorNetworkConnectionLost но моя ошибкаNSURLErrorTimedOut, Однако я не уверен, вызвана ли моя проблема еще одной ошибкой iOS 8.Поведение моей проблемы: после некоторого времени использования - после успешной отправки некоторых HTTP-запросов и получения соответствующих ответов - один запрос вызоветNSURLErrorTimedOutи все последующие (не слишком далеко от последнего по времени, чтобы повторно использовать постоянное соединение) запросы вызовутNSURLErrorTimedOut.Некоторое рабочее решение:Убейте и перезапустите приложение.Отключите соединение WiFi на iPhone, чтобы принудительно использовать 3G / 4G.Включите воздушный режим, а затем выключите его.Мой анализ: Судя по поведению, проблема, по-видимому, вызвана плохим постоянным соединением. Все последующие запросы продолжают использовать это постоянное соединение, поэтому все сбой сNSURLErrorTimedOut, Из обходного пути мы можем увидеть, что все они работают, потому что они вызывают сбой плохого постоянного соединения и создание нового постоянного соединения.

Мои вопросы:

Кто-нибудь еще сталкивался с этой проблемой?Это известная ошибка iOS 8?Это вызвано какой-то нетрадиционной конфигурацией серверов? Я не контролирую серверы, но я знаю, что они используют nginx 1.6.1, и их инженеры работают со мной над расследованием этой проблемы. Какую информацию я должен спросить их?Есть ли способ заставитьNSURLConnection не повторно использовать текущее постоянное соединение, а создать новое, чтобы я мог обойти эту проблему после того, как обнаружу ее в своем коде?Обновить:

Я успешно справился с этой проблемой на iOS 8, используяCFNetwork и контрольConnection Заголовок напрямую. Однако, похоже, проблема обостряется на iOS 9.

Так как моя надежда, что Apple исправит это на iOS 9, разбита, я наконец-то запустил радар:http://www.openradar.me/22770738.

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

Ответы на вопрос(3)

Ваш ответ на вопрос