3

我在 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,则会出现错误网关错误。我是部署方面的新手,所以在这里需要帮助。是什么导致 http 请求仅从 8081 返回?似乎是网络层错误或其他什么?尝试 apache 负载均衡器会是个好主意吗?

4

1 回答 1

1

我也不是部署人员,但我可以说的是:此时,您的部署堆栈似乎更具限制性而非帮助性。当在 Mojolicious 自己的服务器之一(daemon、morbo、hypnotoad)下运行时,它们已经在使用高功率事件循环,使用 plack 服务器会丢失它。同样在 Windows 下,您不能使用 hypnotoad,它会预先分叉工作进程以允许更多负载。

我建议您阅读说明书的部署部分,然后尽可能在某个 linux 服务器上使用 nginx 和 hypnotoad 进行部署。

于 2013-07-06T17:15:00.297 回答