【问题标题】:Is long polling more resource efficient than classical polling?长轮询比传统轮询更节省资源吗?
【发布时间】:2011-08-29 08:32:15
【问题描述】:

为什么让 http 连接保持打开直到内容出现然后重新打开连接比简单地定期打开连接更有效?

当然,后一种情况可能更受打击或错过,但我纯粹是从资源效率的角度提出问题。

【问题讨论】:

    标签: comet polling tornado long-polling


    【解决方案1】:

    通过保持连接打开,您会阻塞资源,但不会产生定期断开连接和设置连接的开销。在函数调用下设置和关闭套接字连接要昂贵得多。将关闭意图发送到连接端点,释放与之关联的内核资源和内存。对于打开连接,同样会发生相反的情况。对于分配内核资源,可能会有序列化调用(取决于内核实现),这会影响整体系统性能。最后但同样重要的是,hit-n-miss 方法不是确定性模型。

    【讨论】:

    • +1 反复拆卸和设置可能是最大的成本
    • 谢谢!我想到了这一点,但不确定,也认为从知识渊博的人那里听到它会很高兴......
    【解决方案2】:

    假设您有一个线程阻塞在等待响应的套接字上。 (如彗星)。在此期间,内核不调度线程,机器上的其他东西可以运行。但是,如果您正在轮询线程,则该线程正忙于短暂的等待期。这也会增加延迟,因为在轮询发生之前您不会知道需要做某事。

    【讨论】:

    • 你是说在连接保持打开并且没有任何东西发送到客户端时内存也被释放了吗?...
    • 大部分时间连接保持打开状态并等待来自服务器的响应。大多数情况下“什么都没有发生”。 (实际上更准确地说,资源(例如内存、内核句柄)在此期间被占用。
    猜你喜欢
    • 1970-01-01
    • 2018-12-30
    • 2013-08-08
    • 2016-02-01
    • 2011-04-20
    • 2019-05-28
    • 2013-03-28
    • 2013-03-22
    • 2012-10-11
    相关资源
    最近更新 更多