
我是 Django/Python/ mod_wsgi 的新手,我想知道是否可以優化此文件以減少記憶體使用:
ServerRoot "/home/<foo>/webapps/django_wsgi/apache2"
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule wsgi_module modules/mod_wsgi.so
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /home/<foo>/logs/user/access_django_wsgi.log combined
ErrorLog /home/<foo>/logs/user/error_django_wsgi.log
KeepAlive Off
Listen 12345
MaxSpareThreads 3
MinSpareThreads 1
MaxClients 5
MaxRequestsPerChild 300
ServerLimit 4
HostnameLookups Off
SetEnvIf X-Forwarded-SSL on HTTPS=1
ThreadsPerChild 5
WSGIDaemonProcess django_wsgi processes=5 python-path=/home/<foo>/webapps/django_wsgi:/home/<foo>/webapps/django_wsgi/lib/python2.6 threads=1
WSGIPythonPath /home/<foo>/webapps/django_wsgi:/home/<foo>/webapps/django_wsgi/lib/python2.6
WSGIScriptAlias /auctions /home/<foo>/webapps/django_wsgi/auctions.wsgi
WSGIScriptAlias /achievers /home/<foo>/webapps/django_wsgi/achievers.wsgi
答案1
儘管您已定義 WSGIDaemonProcess 指令來建立單獨的守護程序進程組,但您實際上並未使用它。如果您打算使用守護程序模式,您應該刪除 WSGIPythonPath 並新增:
WSGIProcessGroup django_wsgi
另外,如果您要使用守護程序模式並且主 Apache 進程中發生的唯一事情是提供靜態文件,您可以將 ThreadsPerChild 更改回:
MaxRequestsPerChild 0
因為不需要定期回收 Apache 伺服器子進程。
順便說一句,丟棄完整的預設 Apache 配置然後添加您認為需要的內容是不好的做法。這是因為您放棄了所有預設的存取安全性,這意味著從技術上講,如果存在允許存取檔案的 URL 映射,則可以提供系統上的每個檔案。