2013-07-06 55 views
3

我已经在Windows XP上开发了一个Mojolicious应用程序,草莓perl 5.14.2和Mojolicious 3.84版本。为了获得高性能,我想创建此应用的多个实例,并在不同的端口上监听同一台计算机。为了实现这一点我做了我的程序的两个拷贝和使用普拉克::中间件::代理负载均衡器::这样的脚本如下:部署多个mojolicious应用程序的实例

use Plack::Builder; 
use Plack::App::Proxy; 

builder { 
    enable "Proxy::LoadBalancer", backends => ['http://l27.0.0.1:8080', 'http://127.0.0.1:8081']; 
    Plack::App::Proxy->new()->to_app; 
}; 

我开始在8080和8081的情况下,然后使用plackup loadb启动负载平衡器。 pl命令。它在localhost:5000上监听得很好。但奇怪的是,当你连接到端口5000只有8081出现,如果它切换到8080它给错误的网关。我是部署方面的新手,所以需要帮助。什么导致http请求只从8081返回?它似乎是网络层错误或别的东西?尝试Apache负载均衡将是个好主意?

+0

你确定应该在8080上侦听的实例真的在运行吗?使用netstat来查明该端口是否真正活动。 – innaM

回答

1

我也不是一个部署人员,但我可以这样说:您的部署堆栈在这一点上似乎更有限制,而不是有用的。当在Mojolicious自己的服务器(守护程序,morbo,hypnotoad)之一下运行时,它们已经在使用高功率的事件循环,使用plack服务器会丢失这些循环。同样在windows下,你不能使用preforking工作进程来允许更多负载的hypnotoad。

我建议你阅读,尽管deployment section of the cookbook然后部署使用nginx和hypnotoad在linux服务器上的某个地方,如果可能的话。

相关问题