我在使用 nginx 和 FastCGI 时遇到了一些问题。我正在使用 Windows 7,并且已成功编译/安装/设置以下项目:
- nginx服务器
- FastCGI 库
- spawn-fcgi-win32.exe
我编写了一个简单的 FastCGI 应用程序,它只是将消息发送回网络服务器。这是代码的简化版本:
while(FCGI_Accept()) {
hello();
}
我产生了几个进程,spawn-fcgi-win32.exe
一切正常:从网络浏览器访问我的应用程序返回了“hello”消息。
但是,为了检查并发性,我更改了我的应用程序如下:
while(FCGI_Accept()) {
sleep10(); //sleep 10 seconds
hello();
}
然后,我在浏览器中打开了两个单独的选项卡并访问了我的应用程序。我希望两个选项卡在 10 秒后返回“hello”消息,但只有第一个选项卡在超时后返回它;第二个标签在 20 秒后完成。这是nginx的访问日志:
127.0.0.1 - 克劳迪 [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)壁虎/20100101 火狐/35.0"
127.0.0.1 - 克劳迪 [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)壁虎/20100101 火狐/35.0"
请注意,尽管我大致在同一时间发送了请求,但 nginx 在 10 秒后“看到”了第二个请求。我的 nginx 配置文件设置了 4 个工作人员和每个工作人员 1024 个连接。为什么 nginx 不产生两个并发工作人员,每个请求一个?
顺便说一句,我已经通过将进程 ID 与 hello 消息一起转储来检查两个 FastCGI 进程是否正常工作。
谢谢