【问题标题】:Can SCGI handle more than one request at a time?SCGI 可以一次处理多个请求吗?
【发布时间】:2022-02-22 21:08:51
【问题描述】:

根据我对SCGI specification 的理解,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 应用程序一次处理多个请求?

【问题讨论】:

    标签: nginx scgi


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-18
      • 2010-12-02
      • 2023-03-27
      • 2013-03-27
      • 2020-07-12
      • 1970-01-01
      • 2019-03-30
      • 2019-04-11
      • 1970-01-01
      相关资源
      最近更新 更多