2011-09-25 129 views
7

如何優化Django以獲得更好的性能?有一些指導?我有以下問題:Django性能調優技巧?

  • 是mod_wsgi最好的解決方案嗎?
  • 有沒有像PHP一樣的操作碼緩存?
  • 我應該如何調整Apache?
  • 如何設置我的模型,以便更少/更快的查詢?
  • 我可以使用Memcache嗎?在一些您的問題
+2

您是否患有性能問題? –

回答

4

評論:

是mod_wsgi的最佳解決方案?

對於大多數人來說,Apache/mod_wsgi已經足夠了,因爲即使Apache沒有正確設置,它們也不會有足夠的流量導致問題。 Web服務器通常不是瓶頸。

有一些碼緩存就像在PHP?

Python的緩存編譯後的代碼在內存中的進程堅持跨請求。因此,您不需要像PHP那樣的單獨的操作碼緩存產品,因爲這是Python在默認情況下所做的。你只需要確保你沒有使用託管機制或配置,這會導致進程被拋出每個請求或過於頻繁。例如,不要使用CGI。

我應該如何調整Apache的?

不知道你的應用程序,或者你正在主持它放在一個無法給出簡單的指導,你需要如何設置Apache系統的任何東西。這是因爲吞吐量,請求持續時間,使用的內存量,可用內存量,處理器數量以及更多的功能。如果你還沒有編寫你的應用程序,那麼你只是在這裏跳槍,因爲直到你知道更多關於你的應用程序和生產負載,你不能最優化地調整Apache。

幾個簡單的建議,但。

  • 不要在同一個Apache主機的PHP。
  • 使用Apache worker MPM。
  • 使用mod_wsgi守護進程模式而不是嵌入模式。

僅憑這一點,您就不會爲自己造成太多的痛苦。

如果您真的需要更好地調整整個堆棧,即應用程序和Web服務器,而不僅僅是過早地優化,因爲即使您沒有真正編寫任何代碼,您仍然會擁有下一個FaceBook但是,您需要開始查看性能監視工具來確定您的應用程序在做什麼。您的應用程序和數據庫將成爲您問題的真正來源,而不是Web服務器。

我談論的那種性能監測工具就像New Relic。儘管如此,如果你還很早,甚至沒有部署任何東西,那麼這本身就是浪費時間。換句話說,在擔心如何以最佳方式運行它之前,先讓代碼工作。