3

或者:如何获得良好的 cgi + 长轮询设置?

我们有一个在 Apache 2 下运行的 (mod_perl) Web 应用程序。保持现有代码不变,我们现在还想做一些长轮询,但是我们会为每个正在进行的长轮询请求占用一个工作人员,这不会'不为我们工作。

我已经知道如何编写一个可以同时处理多个请求的应用程序来处理长轮询/彗星请求,但重要的是我们只有一个外界开放的 IP 端口。

使用 mod-proxy 输入反向代理。我已经看到有关mod-proxy 是否等待/阻止结果返回不等待/阻止或是否取决于 "Transfer-Encoding: Chunked" 的相互矛盾的信息。这是真的,“传输编码”与什么有什么关系?

我还读到 nginx在 reverse proxy 上比 Apache2 好。我可以将 nginx 放在 apache 前面,但单独使用 Apache2 会更简单。我还阅读了有关文件下载/上传、错误页面、日志记录可能存在问题的报告。这里有什么陷阱吗?

假设我们处理彗星请求的服务器正在监听 localhost:8080。

那么我是否能够仅使用 Apache + mod_proxy 创建具有许多长轮询客户端的可扩展设置?在 Apache 和我们的彗星服务器前面使用 nginx?

这类似于Understanding mod_proxy and Apache 2 for writing a comet-server,但不是完全相同的问题。

4

1 回答 1

0

Apache Httpd 使用每个连接的线程模型,并且在长轮询时会很快耗尽线程。我在生产中使用 httpd 作为反向代理时遇到了这个问题,而且似乎没有办法使用 httpd 进行长轮询。

考虑使用 nginx(用于非 java 服务器)或 jetty(作为 j2ee servlet 容器),它们都使用每个线程模型的多个请求,并且不受此问题的影响。

于 2013-06-26T14:01:05.540 回答