[英]In production, Apache + mod_wsgi or Nginx + mod_wsgi?
什么用於中型到大型的Python WSGI應用程序,Apache + mod_wsgi或Nginx + mod_wsgi?
哪種組合需要更多內存和CPU時間?
哪一個更快?
哪個比另一個更穩定?
我也在考慮使用CherryPy的WSGI服務器,但我聽說它不適合非常高負載的應用程序,你對此有何了解?
注意 :我沒有使用任何Python Web Framework,我只是從頭開始編寫整個內容。
注意' :也歡迎其他建議。
對於nginx / mod_wsgi,請確保閱讀:
http://blog.dscpl.com.au/2009/05/blocking-requests-and-nginx-version-of.html
由於nginx是一個事件驅動的系統,它具有行為特征,這對阻塞應用程序是有害的,例如基於WSGI的應用程序。 更糟糕的情況是,使用多進程nginx配置,即使某些nginx工作進程可能處於空閑狀態,您也可以看到用戶請求被阻止。 Apache / mod_wsgi沒有此問題,因為Apache進程只有在擁有實際處理請求的資源時才接受請求。 因此,Apache / mod_wsgi將提供更可預測和可靠的行為。
nginx mod_wsgi的作者解釋了此郵件列表消息中與Apache mod_wsgi的一些差異。
主要區別在於nginx是為了在更小的內存空間中處理大量連接而構建的。 這使得它非常適合那些做彗星的應用程序,例如可以有許多空閑打開連接的連接。 這也使它具有相當小的內存占用量。
從原始性能的角度來看,nginx速度更快,但速度並不快,我將其作為一個決定性因素。
Apache在可用模塊領域具有優勢,而且它非常標准。 你使用的任何網絡主機都會安裝它,大多數技術人員都會非常熟悉它。
此外,如果你使用mod_wsgi,它是你的wsgi服務器,所以你甚至不需要cherrypy。
除此之外,我可以給出的最佳建議是嘗試在兩者下設置您的應用並進行一些基准測試,因為無論任何人告訴您,您的里程可能會有所不同。
CherryPy的網絡服務器有一件事就是它是一個純粹的python webserver(AFAIK),可能會也可能不會讓你更容易部署。 另外,如果您只是將服務器用於WSGI和靜態內容,我可以看到使用它的好處。
(無恥的插件警告:我寫了我要提到的WSGI代碼)
Kamaelia將在下一版本中提供WSGI支持。 很酷的是,你可能能夠使用預制的或使用現有的HTTP和WSGI代碼構建自己的代碼。
(結束無恥插頭)
話雖如此,鑒於目前的選項,我個人可能會選擇CherryPy,因為它似乎是最簡單的配置,我可以理解python代碼,而不是我能理解C代碼。
您可以盡力嘗試每一個,看看每個人的優缺點是針對您的具體應用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.