长时间轮询时,为什么我的其他请求需要这么长时间?

时间:2010-04-17 08:55:49

标签: jquery ajax comet polling

客户端发出2个并发请求。 (1需要60秒 - 长轮询)和另一个不长轮询 - 应该立即返回。当我不做长时间的轮询时,它确实会立即返回。但是一旦我开始用另一个线程进行长轮询,另一个线程就会永远执行。

Firebug显示请求正在等待10-50秒。在服务器上,我描述了从php脚本启动到返回客户端的所有请求,并显示每个请求只需要300ms或更少。

这个问题几乎与我开始进行长轮询(与其他XHR请求)相同。我正在为这两个请求使用jquery。

服务器显示负载很轻。 CPU和内存不到2%。 8个进程耗尽了15个进程。(即使我运行更多的ajax请求,它似乎也不会偏离该数字8)。我猜每个进程可以同时运行多个ajax线程。

我确保在完成执行后立即从所有进程中退出。如果prstat -J下仍列出7个未使用的进程,我看不到进程池的运行情况。 此外,问题有些间歇性地发生。 Firefox应该能够处理2个并发的ajax请求。我不知道问题是什么。

1 个答案:

答案 0 :(得分:1)

我遇到了与firefox和两个jsonp请求相同的问题,一次长轮询。问题是jsonp基本上只是获取javascript的脚本标记,而firefox同步加载动态插入的脚本。

这就是为什么长轮询请求必须在第二个开始加载之前完成的原因。

如果您的案件不是jsonp,我无法提供任何帮助。