SCGI可以同时处理多个请求吗?

  • 本文关键字:请求 处理 SCGI nginx scgi
  • 更新时间 :
  • 英文 :


根据我对SCGI规范的理解,一个SCGI服务器一次只能处理一个请求。SCGI服务器一次只能处理一个请求是真的吗?

我如何绕过这个限制,使使用SCGI服务的web应用程序能够同时处理多个请求?

我考虑启动多个SCGI服务器。例如,如果我启动两个SCGI服务器分别监听127.0.0.1:8000127.0.0.1:8001,我可以像这样配置NGINX web服务器:

upstream myservers {
server 127.0.0.1:8080;
server 127.0.0.1:8001;
}
location / {
include /etc/nginx/scgi_params;
scgi_pass myservers;
}

这个方法实际上允许我的web应用程序一次服务多个请求吗?

如果SCGI服务器本身能够同时处理多个请求,则没有必要启动多个SCGI服务器来一次处理多个请求。

例如,使用fork或pre-fork服务器模型的SCGI服务器将能够一次处理多个请求。在分叉服务器模型中,每当服务器接受一个连接时,它将分叉一个子连接来处理该连接,然后返回接受更多的连接。在预分叉服务器模型中,服务器在启动时分叉几个子服务器。所有这些子进程都阻塞accept()系统调用,直到请求到达。当请求到达时,操作系统将解除对这些accept()中的一个的阻塞,让子进程处理该请求。当这个子节点正在处理请求时,其他子节点仍然阻塞在它们的accept()上,准备接受其他请求。

相关内容

  • 没有找到相关文章

最新更新