2008-12-26 50 views
5

我使用FastCGI和lighttpd運行Django應用程序。什麼值用於FastCGI maxrequests,maxspare,minspare,maxchildren?

有人可以解釋我什麼時候應該考慮什麼時候決定什麼值用於maxrequests,maxspare,minspare,maxchildren?

這些選項沒有很好記錄,但似乎相當重要。

不要只告訴我他們做了什麼,我想了解他們有什麼含義以及我應該如何決定使用哪些值。

謝謝。

回答

13

讓我們先從定義

 
    maxrequests: How many requests does a child server before being killed 
       and a new one forked 
    maxspare : Maximum number of spare processes to keep running 
    minspare : Minimum number of spare processes to prefork 
    maxchildren: Hard limit number of processes in prefork mode 

這意味着你必須在最maxchildren在你的網絡服務器的任何給定的時間運行進程,每個進程運行maxrequests請求。在服務器啓動時,您將獲得分鐘進程,如果有更多請求即將到來,這些進程將持續增長,直到maxspare(或maxchildren)。

所以,minspare讓你說有多少個併發請求您以最小預期(很重要,以避免進程創建,如果你開始有一個,這是很好的開始,比如說10),和maxspare讓你可以說服務器多少併發請求最多會影響(不會影響預期的響應時間等等,需要壓力測試來驗證)。而且,每個孩子的一生都在談論,以防他們由於任何形式的限制而永遠無法運行。

+0

很好的解釋。你可以說更多關於maxrequests嗎?這是我最關心的問題。爲什麼你想要一個子進程在一定數量的請求之後死掉?爲了防止最終的內存泄漏? – ibz 2008-12-26 09:10:03

+0

我不能爲大家說話,儘管使用Django和fastcgi,我們已經看到很多長壽命fastcgi進程的內存問題。爲maxrequests設置一個合理的值使我們不必手動殺死大型進程,因爲它們不夠長,不足以使內存泄漏造成很大損害。 – 2009-08-28 14:29:56

-1

不要忘記協調您的fcgi設置與您的apache工作者設置。我通常比fcgi工作者保留更多的apache工作者......他們體重更輕,並且如果併發性高於maxspare,他將等待可用的fcgi工作者釋放處理請求。