当你的djano项目部署在Apache + mod_python之上时,你可以使用下面的建议来让服务器内存使用降低

1.确保settings.py中DEBUG设置为False
如果没有,将他设置为False。因为,在DEBUG模式下,所有的SQL查询都会被保存在内存中,这样会使你的内存迅速增加
补:apache同样也有个Debug的设置,而且他优先于django的DEBUG=False,因此,仅管django中DEBUG=False,apache中的Python Debug On也会消耗大量内存。

2.在apache配置中使用ServerLimit
默认情况下,Apache将产生大量进程,导致内存的大量使用。您可以使用“ServerLimit”命令来限制这些进程。

3.确保没有大的对象加载入内存
例如:检查你的代码,确保没有一次加载数千条记录到内存的情况。同时,如果你的网站能够让用户下载或上传大文件,也确保这些大文件没有加载入内存

4.让你的主服务器直接服务静态数据
对于django网站来说,这是一条普遍建议,让你的静态数据(images,css...)直接由apache主服务器服务,这将让你的django应用程序节省一点额外的请求。

5.在apache配置中使用MaxRequestsPerChild
有的时候会出现一些内存泄漏的问题,如果是这样的话,我们可以通过使用MaxRequestsPerChild来告诉apache在服务一定数量的请求之后,将杀死改进程,并重新启动一个新进程。一般设置在100到1000之间.
当然还有一种更极端丑陋的做法,就是用crontab来定时重启apache

6.找出你的内存使用量
你能够使用“ps -u <username> -o pid,rss,command“命令来查看运行的进程以及内存使用情况,如

[code] 

 [testweb14@web14 bin]$ ps -u testweb14 -o pid,rss,command 

 PID RSS COMMAND 

 23111 1404 -bash 

 27988 3848 httpd.c 

 27989 10312 httpd.c 

 27990 9804 httpd.c 

 28078 760 ps -u testweb14 -o pid,rss,command 

 [testweb14@web14 bin]$ 

[/code]


正如你可以看到的,我们有三个“的httpd”进程在运行,内存使用分别3848KB,10312KB和9804KB。第一个是apache监督进程,另外两个工作进程(在这个例子,“ServerLimit”设置为2)。监督进程的内存使用一般不会有很大改变,但如果你的应用程序有内存泄漏,工作进程内存的使用可以大大增加。因此,在这个实例中,apache/Django总共使用的内存为3848KB + 9804KB + 10312KB = 23MB