0

根据我对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 应用程序一次服务多个请求?

4

1 回答 1

0

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

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

于 2022-02-22T13:08:51.530 回答