我是 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 映射,则可以提供系统上的每个文件。