2011-06-30 83 views
6

的FastCGI提供了一種方法,以提高成千上萬的Perl 應用已寫入 用於Web的 性能。 - Source爲什麼FastCGI快?

它是怎麼做到的?

+4

我不知道我的「不是一個真正的問題」票同意。對我來說似乎足夠合理。 – Flexo

+1

看來好像答案是隻有兩次點擊..... http://www.fastcgi.com/drupal/node/6?q=node/16 – 2011-06-30 18:56:47

+2

@awoodland同意。這個問題可以使用快速編輯,但它確實是有效的。 @Jack Maney在這裏得到答案也沒有錯。 – WCWedin

回答

10

馬克·R·布朗的whitepaper on the subject聲稱的FastCGI的的主要優點之一是,不同請求可以共享一個緩存,使緩存實用:

目前應用最广部署的Web服務器API基於進程池服務器模型。 Web服務器由父進程和子進程池組成。進程不共享內存。傳入的請求隨機分配給空閒的孩子。孩子在接受新請求之前運行完成請求。一個典型的服務器有32個個子進程,大型服務器有100或200

在內存中緩存的工作非常差在這個服務器模式,因爲進程不共享內存和傳入的請求被隨機分配給進程。例如,要在內存中保存常用文件,服務器必須爲每個子文件保留一個文件副本,這會浪費內存。當文件被修改時,所有的孩子都需要得到通知,這很複雜(API不提供這種方式)。

FastCGI的被設計爲允許有效的內存緩存。請求從任何子進程路由到FastCGI應用程序服務器。 FastCGI應用程序進程維護一個內存中的緩存。

+0

謝謝WCWedin :) –

4

它重用從池中,而不是產卵爲每個請求一個新的進程。

+4

有很多的重新使用過程(正)副作用:也許你可以解釋一下? –

8

「相反的 每個請求創建一個新的進程,FastCGI的使用持久 進程來處理一系列 請求。這些過程由 擁有的FastCGI的服務器,而不是Web服務器 。」

- Wikipedia