3

我已经设置了一个小型 Mojolicious 应用程序在 Plack 后面运行,充当这样的代理:

builder {
      mount "/q" => builder {
          Plack::App::Proxy->new(remote => "http://127.0.0.1:3010")->to_app;
      };
};

我需要以这种方式运行它(而不是直接安装应用程序),因为我需要每天重新加载应用程序几次,因为我无法进入这里。

该应用程序在 hypnotoad 上运行,当我直接点击它时,一切都很好。但是,当通过 plack 代理访问时,我经常收到 502 响应 - Gateway error: Connection timed out

有趣的是,当我重新加载一两次时,一切似乎都很好,并且我得到了正确的响应。

任何人都可以帮助解决这个问题吗?

4

1 回答 1

2

Mojolicious 中的默认超时值可能对您的应用程序来说不够高,这可能会导致工作进程被管理器停止,从而导致对 Plack 应用程序的无效响应,从而导致 502。所以检查配置超时设置并在必要时进行修改。如果您的应用程序负载过重,您可能还需要增加工作人员的数量,尽管我怀疑这不是问题所在。

更多有用的信息可以在 mojolicious 应用程序日志文件中找到 - 如果您在调试下运行 hypnotoad,MOJO_LOG_LEVEL=debug那么您将看到连接命中应用程序,如果这确实是问题,则超时。

重新加载时响应正常表明您的应用程序加载速度可能很慢,或者可能正在填充缓存等。如果没有来自 hypnotoad 服务器的日志条目,很难说

于 2015-04-27T20:28:49.573 回答