【发布时间】:2014-05-31 18:57:33
【问题描述】:
我们有一个使用普通 CGI 很长时间的 perl Web 应用程序,现在我们正在尝试使用其他东西(mod_perl、fastcgi、whathaveyou)移植到 Dancer 2,以便获得更高的性能。
这是我们现在的 Apache 设置(我知道 Starman 是强烈推荐的一种,但我们希望坚持使用 Apache 作为我们的 Web 服务器)
<VirtualHost *>
...
<Directory "/opt/alDente/versions/DanceApp/public">
AllowOverride None
Options +ExecCGI -MultiViews FollowSymLinks
Order allow,deny
Allow from all
AddHandler cgi-script .cgi
</Directory>
ScriptAliasMatch /dance/(.*) /opt/alDente/versions/DanceApp/public/dispatch.cgi/$1
ProxyPreserveHost On
ProxyPass /test http://localhost:3000/
ProxyPassReverse /test http://localhost:3000/
...
部署 Dancer 2 的普通 CGI 方法(如上所示)运行良好,即使在同一服务器下进行多个部署也是如此。问题:这样做会给我们带来零性能提升。
我还尝试使用 Dancer 2 默认附带的 Simple Web 服务器,并让 Apache 指向它(如上所示)。它为我们带来了巨大的性能提升,简单且易于设置。问题:我们无法使用此设置设置多个部署,这对我们来说是绝对必须的。而且内部 URL 被代理搞砸了,除非我将 /test 更改为 /(即使我打开了 ProxyPreserveHost),但由于显而易见的原因,这不起作用具有多个部署。
我昨天也花了一整天的时间试图让 mod_perl 使用这个设置,但我读到 mod_perl 也无法处理同一服务器上的多个部署,也无法让它正常工作。
我也尝试使用 fastcgi 进行设置(使用 dispatch.fcgi 而不是 dancer 2 附带的 dispatch.cgi),但这似乎并没有带来任何性能提升。
我能做些什么来解决这个问题?使用 Apache 并在同一台服务器上处理多个部署(由于预算问题,我们的服务器必须托管生产、测试和 alpha 环境)对我们来说是必须。
【问题讨论】:
标签: apache perl fastcgi mod-perl dancer