我在使用nginx和FastCGI时遇到了一些麻烦。我正在使用Windows 7,我已经成功编译/安装/设置了以下项目:
我写了一个简单的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进程是否正常工作。
由于