[英]Can SCGI handle more than one request at a time?
根據我對SCGI 規范的理解,一個 SCGI 服務器一次只能處理一個請求。 SCGI 服務器一次只能處理一個請求是真的嗎?
我該如何解決這一限制,以便使用 SCGI 服務的 web 應用程序能夠一次處理多個請求?
我考慮過啟動多個 SCGI 服務器。 例如,如果我啟動兩個分別偵聽127.0.0.1:8000
和127.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.