Nat*_*han 5 apache connection-pooling reverse-proxy mod-proxy
摘要/ Quesiton:
我让Apache运行Prefork MPM,运行php.我正在尝试使用Apache mod_proxy创建一个反向代理,我可以通过它重新路由我的请求,以便我可以使用Apache来进行连接池.示例impl:
在httpd.conf中:
SSLProxyEngine On
ProxyPass /test_proxy/ https://destination.server.com/ min=1 keepalive=On ttl=120
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的测试时,这是循环中的以下命令:
curl -G 'http://localhost:80/test_proxy/testpage'
Run Code Online (Sandbox Code Playgroud)
它似乎没有重新使用连接.
在进一步阅读之后,听起来我没有获得连接池功能,因为我使用的是Prefork MPM而不是Worker MPM.因此,每次我向代理发出请求时,它都会使用自己的连接池(大小为1)来旋转新进程,而不是使用维护自己的池的单个工作进程.这种解释是对的吗?
背景资料:
我通过https向我运行的网站上的每个页面发出请求的外部服务器.
谈判SSL握手变得越来越昂贵,因为我使用php而且它似乎不支持连接池 - 如果我向我的网站收到300页请求,他们必须与外部服务器进行300次SSL握手,因为连接已关闭每个脚本完成运行后.
所以我试图在Apache下使用反向代理作为连接池,在php进程之间保持连接,所以我不必经常进行SSL握手.
给我这个想法的消息来源:
Prefork 仍然可以为每个进程的每个后端服务器池 1 个连接。
Prefork 不一定为每个前端请求创建一个新进程,服务器进程本身是“池化”的,其行为取决于 MinSpareServers/MaxSpareServers 等。
为了最大限度地提高预派生进程为您提供后端连接的频率,请避免过高或过低的 maxspareservers 或过高的 minspareservers,因为这些将导致“新”进程接受新连接。
您可以在 LogFormat 指令中记录 %P,以帮助了解进程重用的频率。
归档时间: |
|
查看次数: |
4668 次 |
最近记录: |