我已经做了一段时间的网络编程,并且对LAMP堆栈非常熟悉.我决定尝试玩弄nginx的/接龙/舞者堆栈和我有点困惑如何理解,从一个高层次,所有的部分是如何相互关联的.设置堆栈似乎并不像设置LAMP堆栈那样简单,但这可能是因为我并不真正了解这些部分是如何相关的.
我理解nginx正在扮演的角色 - 一个轻量级的网络服务器/代理 - 但我对starman与pgsi,plack和舞者的关系感到困惑.
我将非常感谢这些部分如何相互关联以及为什么每个部分都需要(或不必要)来获得堆栈设置的高级细分.谢谢!
我正在尝试使用Plack/Starman部署我的小型Catalyst Web应用程序.所有文档似乎都表明我想将它与nginx结合使用.这有什么好处?为什么不直接在Star 80上使用Starman?
我使用以下方式启动了Dancer/Starman服务器:
sudo plackup -s Starman -p 5001 -E deployment --workers=10 -a mywebapp/bin/app.pl
但我不确定如何停止服务器.有人能给我一个快速的方法来阻止它以及它产生的所有工人吗?
我正在使用Starman(v0.4014)和ngynx作为前端代理运行Dancer(v1.3202)应用程序.我注意到我的负载平衡器每隔几个小时出现一次巨大的延迟峰值,并想知道是否工作人员达到了他们的请求限制并重新启动.延迟从平均30ms到1000ms或更长.我检查了MongoDB,没有长时间运行的查询.--max-requests对工人实际做了什么以及当工人达到这个限制时会发生什么?
当与Starman一起运行时,我无法找到在Dancer应用程序中使用包变量(或任何类型)的方法.我想它与Starman的preforking有某种关系,但这应该是一个特征,而不是一个bug.
这是舞者应用程序的示例:
package nafig;
use Dancer;
my $a = 0;
$b = 0;
$nafig::c = 0;
any '/' => sub {
warn join " ", $a++, $b++, $nafig::c++;
};
start;
Run Code Online (Sandbox Code Playgroud)
然后我连续3次调用该应用程序.首先,我用plack引用服务器运行它,一切都按预期工作:
$ plackup app.pl
HTTP::Server::PSGI: Accepting connections at http://0:5000/
0 0 0 at ... blah-blah-blah
1 1 1 at ... blah-blah-blah
2 2 2 at ... blah-blah-blah
Run Code Online (Sandbox Code Playgroud)
但是当我和Starman做同样的事情时,我得到了以下内容.
$ plackup -s Starman app.pl
2013/11/17-23:33:35 Starman::Server (type Net::Server::PreFork) starting! pid(527)
Resolved [*]:5000 to [::]:5000, IPv6
Not including resolved host [0.0.0.0] IPv4 …
Run Code Online (Sandbox Code Playgroud)