高流量网站的长轮询问题

时间:2009-09-14 19:04:34

标签: http web-applications long-polling

假设我有脚本,在服务器上执行长轮询以检查用户是否有任何新的消息。服务器端将是这样的

while counter < 5
    if something_changed
        push_changes_to_client
        break
    else
        counter++
        sleep 5

对数据库进行5次检查,如果没有变化,则每次检查5s,直到下次检查为止,最长执行时间约为25秒。

当客户端从一个页面快速移动到另一个页面时会发生什么?我认为即使客户端移动到不同的页面,服务器脚本也会继续运行,然后它会发送另一个更改请求。

这是否意味着,当很多人在网站周围快速移动时(每页上的最大执行次数少于25秒),那么服务器必须继续运行所有脚本,这些脚本正在尝试响应不会发生的页面不再存在了吗?这不会导致服务器使用它的所有线程池吗?

1 个答案:

答案 0 :(得分:4)

在具有同步睡眠调用的每线程连接模型中,这确实可能占用大量线程。但是,如果“sleep”只是调度回调并返回,则可以避免线程池logjam。

相关问题