我已经在Windows XP、草莓perl 5.14.2和Mojolicious 3.84版本上开发了一个Mojolicious应用程序。为了高性能,我想创建此应用程序的多个实例,并侦听不同的端口,但同一台计算机。为此,我制作了两个程序副本,并使用Plack::Middleware::Proxy::Loadbalancer脚本,如下所示:
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,它会给出错误的Bad Gateway。我是部署方面的新手,所以需要帮助。是什么原因导致http请求仅从8081返回?这似乎是网络层错误或其他什么?尝试apache loadbalancer会是个好主意吗?
发布于 2013-07-07 01:15:00
我也不是一个部署人员,但我可以说的是:在这一点上,您的部署堆栈似乎更多的是限制而不是帮助。当在Mojolicious自己的服务器(daemon,morbo,hypnotoad)下运行时,他们已经使用了一个高性能的事件循环,而使用plack服务器会丢失这个循环。此外,在windows下,您不能使用hypnotoad,它会预先派生工作进程以允许更多负载。
如果可能的话,我建议你通读一遍deployment section of the cookbook,然后使用nginx和hypnotoad在linux服务器上部署。
https://stackoverflow.com/questions/17499763
复制相似问题