我在Windows XP上开发了一个Mojolicious应用程序,草莓perl 5.14.2和Mojolicious版本3.84。为了获得高性能,我想创建此应用程序的多个实例,并在不同的端口上监听,但同一台计算机。为了实现这一点,我制作了我的程序的两个副本,并使用如下所示的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命令启动loadbalancer。它在localhost:5000上听得很好。但奇怪的是,当你连接到端口5000时,只有8081出现,如果它切换到8080,它会给出错误的网关错误。我是部署方面的新手,所以需要帮助。导致http请求仅从8081返回的原因是什么?它似乎是网络层错误或其他什么?试试apache loadbalancer会不错?
答案 0 :(得分:1)
我也不是一个部署人员,但我可以这么说:你的部署堆栈似乎更有限,而不是在这一点上有用。当在一个Mojolicious自己的服务器(daemon,morbo,hypnotoad)下运行时,他们已经在使用高功率事件循环,使用plack服务器会丢失。同样在windows下你不能使用hypnotoad来预备工作进程以允许更多的负载。
我建议你阅读deployment section of the cookbook,然后在某个地方使用nginx和hypnotoad进行部署,如果可能的话。