或者:如何获得良好的 cgi + 长轮询设置?
我们有一个在 Apache 2 下运行的 (mod_perl) web 应用程序。保持现有代码不变,我们现在还想做一些长轮询,但随后我们将为每个正在进行的长轮询请求占用一个 worker 并且这对我们不起作用。
我已经知道如何编写一个可以同时处理许多请求的应用程序来处理长轮询/comet 请求,但重要的是我们只有一个单个对外开放的 IP 端口世界。
使用 mod-proxy 输入反向代理。我看到关于 mod-proxy waits/blocks for the result to come back 是否存在的相互矛盾的信息, doesn't wait/block ,或者它是否depends on "Transfer-Encoding: Chunked" .哪个是真的,“传输编码”与什么有什么关系?
我还读到 nginx 是 better than Apache2 at reverse proxy .我同意将 nginx 放在 apache 前面,但单独使用 Apache2 会更简单。我还阅读了有关文件下载/上传、错误页面、日志记录可能存在问题的报告。这里有什么问题吗?
假设我们处理 comet 请求的服务器正在监听 localhost:8080。
那么我是否能够仅使用 Apache + mod_proxy 创建具有许多长轮询客户端的可扩展设置?在 Apache 和我们的 cometd 服务器前面使用 nginx?
这类似于 Understanding mod_proxy and Apache 2 for writing a comet-server ,但不是完全相同的问题。
最佳答案
Apache Httpd 使用每个连接线程模型,并且在长轮询时会很快耗尽线程。我在使用 httpd 作为反向代理的生产中遇到了这个问题,似乎没有办法使用 httpd 进行长轮询。
考虑使用 nginx(用于非 java 服务器)或 jetty(作为 j2ee servlet 容器)它们都使用每个线程模型的多个请求,并且不受此问题的影响。
关于apache2 - Apache 2 的 mod_proxy 会在长轮询时等待并占用一个 worker 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14157515/