如何使用 Plack 和 Mojolicious 避免 502 响应?

How do I avoid 502 responses with Plack and Mojolicious?

我已经在 Plack 后面设置了一个小型 Mojolicious 应用 运行 作为代理,如下所示:

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

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

应用程序运行在催眠蟾蜍上,当我直接点击它时,一切正常。但是,当通过 plack 代理访问时,我经常会收到 502 响应 - Gateway error: Connection timed out.

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

谁能帮忙解决这个问题?

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

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

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