Python

django mod_wsgi 記憶體問題

  • February 10, 2010

我在 VPS 伺服器(128mb ram)上有我的 django 應用程序當我用 python manage.py runserver 啟動它時,它執行良好,但如果我嘗試在 apache/mod_wsgi 上使用它,它很快就會導致嚴重的減速(在我點擊幾個我網頁上的隨機連結),它似乎記憶體不足。這甚至發生在“hello world”應用程序中。但這有點奇怪,因為它執行良好 wit manage.py runserver 有什麼想法嗎?

/var/log/apache2/error.log
-----------------------------
[Wed Feb 10 00:00:40 2010] [error] [client 65.55.37.202] File does not exist: /var/www/robots.txt
[Wed Feb 10 00:01:22 2010] [error] [client 65.55.37.202] File does not exist: /var/www/file
[Wed Feb 10 00:02:32 2010] [warn] child process 2023 still did not exit, sending a SIGTERM
[Wed Feb 10 00:02:32 2010] [warn] child process 1961 still did not exit, sending a SIGTERM
[Wed Feb 10 00:02:32 2010] [warn] child process 1994 still did not exit, sending a SIGTERM
[Wed Feb 10 00:02:32 2010] [warn] child process 1995 still did not exit, sending a SIGTERM
[Wed Feb 10 00:02:32 2010] [warn] child process 1996 still did not exit, sending a SIGTERM
[Wed Feb 10 00:02:33 2010] [warn] child process 2023 still did not exit, sending a SIGTERM
[Wed Feb 10 00:02:33 2010] [warn] child process 1961 still did not exit, sending a SIGTERM
[Wed Feb 10 00:02:33 2010] [warn] child process 1994 still did not exit, sending a SIGTERM
[Wed Feb 10 00:02:33 2010] [warn] child process 1995 still did not exit, sending a SIGTERM
[Wed Feb 10 00:02:33 2010] [warn] child process 1996 still did not exit, sending a SIGTERM
[Wed Feb 10 00:02:34 2010] [notice] caught SIGTERM, shutting down
[Wed Feb 10 00:15:31 2010] [notice] mod_python: Creating 8 session mutexes based on 150 max processes and 0 max threads.
[Wed Feb 10 00:15:31 2010] [notice] mod_python: using mutex_directory /tmp 
[Wed Feb 10 00:15:32 2010] [notice] Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4 with Suhosin-Patch mod_python/3.3.1 Python/2.5.2 mod_wsgi/2.3 configured -- resuming normal operations
[Wed Feb 10 00:17:24 2010] [error] [client 202.152.243.143] File does not exist: /var/www/file, referer: http://www.webmaster-tutorial.com/view/919
[Wed Feb 10 00:19:56 2010] [error] [client 202.152.243.143] File does not exist: /var/www/favicon.ico
[Wed Feb 10 00:20:09 2010] [error] [client 202.152.243.143] File does not exist: /var/www/favicon.ico
[Wed Feb 10 00:23:25 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:23:41 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:23:52 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:24:03 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:24:16 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:24:29 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:24:39 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:24:51 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:25:01 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:25:11 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:25:21 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:25:31 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
[Wed Feb 10 00:25:41 2010] [error] (12)Cannot allocate memory: fork: Unable to fork new process
----------------------------------

確保您沒有使用嵌入式模式。請改用守護程序模式。看:

http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html

解釋為什麼嵌入式模式不適合受限的記憶體環境。

順便說一句,也拋棄 mod_python 並使用更新的 mod_wsgi,特別是 mod_wsgi 3.X 並設置:

WSGIRestrictEmbedded On

除了使用守護程序模式來獲得更多的記憶體節省。

引用自:https://serverfault.com/questions/111382