代理FastCGI时,nginx不会产生工作人员

时间:2015-02-25 17:13:04

标签: windows nginx fastcgi spawn-fcgi

我在使用nginx和FastCGI时遇到了一些麻烦。我正在使用Windows 7,我已经成功编译/安装/设置了以下项目:

  • nginx服务器
  • FastCGI库
  • 产卵-FCGI-win32.exe

我写了一个简单的FastCGI应用程序,只是将消息发送回网络服务器。这是代码的简化版本:

while(FCGI_Accept()) {
    hello();
}

我通过spawn-fcgi-win32.exe生成了几个进程,一切运行正常:从网络浏览器访问我的应用程序返回了"你好"信息。

但是,为了检查并发性,我按如下方式更改了我的应用程序:

while(FCGI_Accept()) {
    sleep10(); //sleep 10 seconds
    hello();
}

然后,我在浏览器中打开了两个单独的标签,并访问了我的应用程序。我希望两个标签都返回"你好" 10秒后消息,但只有第一个选项卡在超时后返回;第二个标签在20秒后完成。这是nginx的访问日志:

127.0.0.1 - claudi [25 / Feb / 2015: 17:45:16 +0100]" GET /foo.php HTTP / 1.1" 200 3664" - " " Mozilla / 5.0(Windows NT 6.1; WOW64; rv:35.0)Gecko / 20100101 Firefox / 35.0"

127.0.0.1 - claudi [25 / Feb / 2015: 17:45:26 +0100]" GET /foo.php HTTP / 1.1" 200 3664" - " " Mozilla / 5.0(Windows NT 6.1; WOW64; rv:35.0)Gecko / 20100101 Firefox / 35.0"

请注意,虽然我几乎同时发送了请求,但是nginx"看到" 10秒后的第二个。我的nginx配置文件设置4个worker,每个worker有1024个连接。为什么nginx不会产生两个并发工作者,每个请求一个?

顺便说一句,我已经通过将进程ID与hello消息一起转发来检查两个FastCGI进程是否正常工作。

由于

1 个答案:

答案 0 :(得分:1)

使用此处http://nginx-win.ecsds.eu/的正确版本并使用安装程序获取php / python / etc ..工作。