代码之家  ›  专栏  ›  技术社区  ›  Flux

SCGI一次能处理多个请求吗?

  •  0
  • Flux  · 技术社区  · 4 年前

    从我对 SCGI specification ,SCGI服务器一次只能处理一个请求。SCGI服务器一次只能处理一个请求,这是真的吗?

    如何克服这个限制,使使用SCGI服务的web应用程序能够一次处理多个请求?

    我考虑过启动多个SCGI服务器。例如,如果我启动两台SCGI服务器,同时监听 127.0.0.1:8000 127.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应用程序一次处理多个请求吗?

    0 回复  |  直到 4 年前
        1
  •  0
  •   Flux    4 年前

    如果SCGI服务器本身一次能够处理多个请求,则无需启动多个SCGI服务器来一次处理多个请求。

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