2012-10-28 83 views
5

我正在EC2小實例(1.7 GB RAM)上使用postgres和apache(wsgi-mod不是守護進程,但直接)在其上運行我的應用程序的alpha版本。Django性能/內存使用

性能沒問題,但它可能會更好。如果太多的測試用戶加入,我也擔心內存使用情況。

從Apache切換到nginx服務器是明智嗎?有沒有任何Django開發人員能夠做到這一點,並對結果感到高興?在途中的任何其他提示也是受歡迎的。

感謝

+0

這不應該是服務器故障? – tr4656

+1

前一段時間切換 - 我已完成的最佳步驟。性能和內存使用率是一個夢想。應用程序通過Gunicorn服務 – Thomas

回答

4

我們一起使用nginx的與我們在gunicorn服務器Django應用程序。到目前爲止,性能相當不錯,但我還沒有和Apache設置進行任何直接比較。內存使用率非常小,nginx需要大約10MB內存和大約150MB的gunicorn(但它也服務於多個應用程序)。當然,這可能會因應用程序而異。

我建議只是試一試,在網上和/或gunicorn網站上設置一些教程應該很容易。還可以獲得一些類似的測試用例,並使用某種監控軟件(如munin)查看隨時間推移的變化。

+0

感謝您的答案。這些數字非常有趣。我想知道我是否便宜,甚至可以使用便宜的Micro Ec2實例(613 MB)。我只有一個應用程序和一點錢 - 作爲一個初創公司。:)我可以給它一個鏡頭,看看我是否得到內存溢出。我今天做了一些研究,你對uWSGI的看法是什麼,這是槍炮的替代品是否正確?也感謝慕尼黑。可以進來非常方便。 – Houman

+0

請記住,微型實例沒有分配固定數量的CPU。但是要開發一套真實的測試和檢查,也許這已經足夠了!雖然沒有關於uWSGI的個人經歷,對不起。 – j0nes

+0

+1您的建議。真正。微型實例在小型爆發中效果最好,在實際爆發中,它們實際上分配了2個cpus。畢竟,我應該留下小實例。至少連續分配一個cpu。最後一個問題,你把DB(postgres或mysql)放在同一個實例上嗎?謝謝 – Houman

1

我有不同的結果。當應用程序速度非常快,非阻塞時,nginx具有較小的內存佔用情況。流量更高的好處是更大。

我有一對GIS應用程序有點慢,在這種情況下,nginx失敗了。我的建議是:不要在任何可以阻塞幾秒鐘的任何事情上使用nginx + wsgi。

+1

+1謝謝你的建議 – Houman

2

爲什麼不使用mod_wsgi的守護進程模式?如果您使用的是嵌入式模式,那麼如果您不小心如何設置Apache,則可以設置自己的內存問題。

圍棋有一個讀:

http://blog.dscpl.com.au/2012/10/why-are-you-using-embedded-mode-of.html

,也看我PYCON在議論:

http://lanyrd.com/2012/pycon/spcdg/

而且修改了你的問題,並指明Apache的MPM你使用什麼MPM設置是。

至於使用替代品如gunicorn或uWSGI,對於可比較的配置,內存要求並沒有太大的差異,因爲底層服務器並不會決定使用多少內存,它是將成爲您在其上運行的特定Python Web應用程序。這是一個普遍的誤解,gunicorn或uWSGI以某種方式神奇地解決了所有問題,並且Apache無法做到。爲Python Web應用程序正確設置Apache,不要依賴其默認設置,並且它與其他解決方案一樣有效,並且可以根據您的要求提供更多的靈活性。

非常建議您進行一些監測以確定真正的問題和瓶頸。

+0

+1 Thanks Graham。您的博客非常好,您的演講內容豐富。畢竟,我仍處於技術嘗試階段,可能會堅持Apache守護進程。但是你也提到爲了達到nginx的輕量級,Apache需要禁用一些buildin mods。這難以實現嗎? – Houman

+0

取決於您使用的Linux發行版以及是否使用其Apache發行版。例如http://www.cyberciti.biz/faq/howto-disable-apache-modules-under-linux-unix/其他平臺可能有點不同。如果在Apache安裝上運行,可能意味着註釋掉適當的LoadModule行。 –

+0

啊道歉,忘了提及我使用Ubuntu 12.04與它附帶的Apache。所以我現在看到如何禁用它們。是否有我可以安全禁用等所有可用模塊的列表? – Houman