如何避免在Plack和Mojolicious中出现502响应?

4

我已经搭建了一个小型的Mojolicious应用程序,并将其设置为在Plack代理后面运行,如下所示:

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

我需要以这种方式运行它(而不是直接挂载应用程序),因为我需要每天重新加载几次应用程序,由于某些原因我不能在这里解释。
该应用程序在hypnotoad上运行,当我直接访问时,一切正常。然而,当通过plack代理访问时,经常会出现502响应-网关错误:连接超时。
有趣的是,当我重新加载一两次时,一切似乎都正常,并且我得到了正确的响应。
有人可以帮助解决这个问题吗?
1个回答

3
很可能Mojolicious中默认的超时时间不够长,这可能导致管理器停止工作进程,从而导致Plack应用程序无效响应,最终出现502错误。因此,请检查超时的配置设置并根据需要进行修改。如果您的应用程序负载较大,您可能还需要增加工作进程数量,尽管我怀疑这不是问题的原因。
在mojolicious应用程序日志文件中可以找到更有用的信息-如果您使用MOJO_LOG_LEVEL=debug在调试模式下运行hypnotoad,则会看到连接命中应用程序,然后超时(如果确实是该问题)。
重新加载时响应良好可能表明应用程序中某些内容加载缓慢,或者可能正在填充缓存等。没有来自hypnotoad服务器的日志条目很难确定具体原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接