2012-10-04 48 views

回答

6

爲了追蹤問題,我首先測量併發連接的最大數量,並發現這是始終圍繞55.

  • 最大減少到10(通過設置操作隊列最大值,少超時,但還不夠完善

  • 最大限度地降低了4個 - 甚至更少超時,但仍然有一些

  • 最高設置爲1 - ?!這已經開始工作,正確都能跟得上

有時候,應用程序可以在沒有併發的情況下正常工作(最大== 1),但它仍然失敗了大約一半的時間。

所以我燒了支持事件與蘋果,並得到了最有經驗的工程師建議之一。根據來自他的建議我嘗試了以下內容:

  • 跑了不同運營商的蜂窩網絡(Verizon公司)上的應用程序,它完美地工作。所以,問題不是細胞本身(或iOS),但& T的蜂窩網絡(紐約州和新澤西州都失敗)

  • 從http切換到https,現在它適用於完美無瑕的AT & T搭配完全併發

  • 調查了網絡端點以確定其功能,結果很差(稍後)。我嘗試了一個具有更多功能的不同Web端點,並且使用http解決了原始問題。

我從中學到如下:

  • 有使用iOS5.1或iOS6的

  • ,如果你有AT & T公司的3G這個問題,並沒有什麼區別使用http,請嘗試切換到https

  • 如果端點使用HTTP1.0且不支持'Connection:keep-alive',則每個http req uest正在建立並拆除TCP連接。我相信蜂窩網絡的這種「顛簸」是爲什麼AT會斷開我的一些會話,但當然無法確切知道這一點。

  • 使用支持持久連接的HTTP1.1服務,問題消失。在這種情況下,沒有TCP連接抖動。

  • 一些HTTP1。1服務支持'流水線',就像iOS(使用NSURLRequest設置,HTTPShouldUsePipelining)一樣,如果我可以切換到這個,那麼我的性能應該會大大提高

  • 有一個WWDC2012視頻討論瞭如何提高網絡性能:會話706「網絡最佳做法」

編輯

所以我剝洋蔥這只是變得更離奇!經過進一步討論後,一些網絡人員對CloudFront進行了測試,並確實接受了「連接:保持活動」。我一遍又一遍地試着讓它在昨天工作,但不能。

網絡專家建議我嘗試使用https和低時,它看到它!出於某種原因,當在'3G'上使用'http'時,該標頭標籤被刪除或被忽略。我也用Wifi測試了我的應用程序。在所有情況下,除了ATT/3G之外,'連接'在響應中被返回。

相關問題