簡體   English   中英

SCGI 一次可以處理多個請求嗎?

[英]Can SCGI handle more than one request at a time?

根據我對SCGI 規范的理解,一個 SCGI 服務器一次只能處理一個請求。 SCGI 服務器一次只能處理一個請求是真的嗎?

我該如何解決這一限制,以便使用 SCGI 服務的 web 應用程序能夠一次處理多個請求?

我考慮過啟動多個 SCGI 服務器。 例如,如果我啟動兩個分別偵聽127.0.0.1:8000127.0.0.1:8001的 SCGI 服務器,我可以這樣配置 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 服務器來一次處理多個請求。

例如,使用分叉或預分叉服務器 model 的 SCGI 服務器將能夠一次處理多個請求。 在forking server model中,每次server接受一個連接,它會fork一個child來處理這個連接,然后go返回接受更多的連接。 在預分叉服務器 model 中,服務器在啟動時分叉了幾個孩子。 所有這些孩子都阻塞在accept()系統調用上,直到請求到達。 當請求到達時,操作系統將解除對其中一個accept()的阻塞,讓子進程處理該請求。 當這個孩子正在處理請求時,其他孩子仍在阻塞他們的accept() ,准備接受其他請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM