【问题标题】:Maximum Concurrent Http connections per host, Alamofire?每个主机的最大并发 Http 连接,Alamofire?
【发布时间】:2017-09-10 16:39:03
【问题描述】:

我想增加 Swift 中每个主机的最大并发连接数,在 iOS 中默认限制为 4。

我正在使用 Alamofire

  • 我已尝试将 HTTPMaximumConcurrentPerHost 增加到 50。
  • 我尝试了 for in loop 方法,但仍然有限。
  • 还尝试将 url 请求包装到操作队列中,但连接仍然有限。

我看到一个用 Obj-C 编写的库告诉他们每个主机同时使用超过 4 个连接,但我没有对 Obj-C 进行编程以知道它是否真实。 Library on Github

有没有一种解决方案可以让每台主机使用更多的并发连接?

Apple 说这个限制是针对每个会话的,所以这个限制可以是 超过每个应用程序使用多个会话

如何实现?

*我已经通过 Charles 测试了我的网速和服务器响应,结果为 250 Req/Second,在模拟器中使用上述方法时为 22 Req/Second。

【问题讨论】:

    标签: ios swift alamofire nsurlsession afhttpsessionmanager


    【解决方案1】:

    这似乎是the solution

    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
    configuration.HTTPMaximumConnectionsPerHost = 50
    configuration.timeoutIntervalForRequest = 30
    let manager = Alamofire.Manager(configuration: configuration)
    

    请记住,除非框架使用异步 IO(我不认为 N​​SURLSession 会这样做),否则您会受到处理器内核数量的限制,即您可以同时执行多少线程。我在上面链接的答案建议将请求包装在NSOperation 中,以便您可以使用NSOperationQueue 更精细地管理并发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 2016-11-15
      • 2014-03-29
      • 2012-08-25
      相关资源
      最近更新 更多