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

时间:2015-04-13 06:12:37

标签: perl mojolicious plack

我已经设置了一个小的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

有趣的是,当我重装一两次时,一切似乎都很好,我得到了适当的回应。

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

1 个答案:

答案 0 :(得分:2)

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

在mojolicious应用程序日志文件中可以找到更多有用的信息 - 如果你在使用MOJO_LOG_LEVEL=debug的debug下运行hypnotoad,那么你会看到连接点击应用程序,然后超时如果这确实是问题。< / p>

重新加载时的响应正常表示可能在您的应用中加载缓慢,或者可能正在填充缓存等。很难说没有来自催眠服务器的日志条目