更有效地使用apache?

时间:2012-05-18 23:07:56

标签: linux apache

我在ec2上运行了一个django应用程序。它是一个微实例,我看到62%的内存被一个没有用户的应用程序使用。这对我来说似乎很高,所以我做了:

$ ps aux|grep apache
root      9318  0.0  1.4 204924  9052 ?        Ss   23:01   0:00 /usr/sbin/apache2 -k start
ubuntu    9323  0.1  4.7 234824 28588 ?        S    23:01   0:00 /usr/sbin/apache2 -k start
ubuntu    9324  0.1  4.7 235176 28780 ?        S    23:01   0:00 /usr/sbin/apache2 -k start
ubuntu    9325  0.1  4.8 235536 29088 ?        S    23:01   0:00 /usr/sbin/apache2 -k start
ubuntu    9326  0.1  4.7 234808 28564 ?        S    23:01   0:00 /usr/sbin/apache2 -k start
ubuntu    9327  0.1  4.7 234952 28620 ?        S    23:01   0:00 /usr/sbin/apache2 -k start
ubuntu    9328  0.1  4.7 235136 28892 ?        S    23:01   0:00 /usr/sbin/apache2 -k start
ubuntu    9329  0.1  4.6 234856 28140 ?        S    23:01   0:00 /usr/sbin/apache2 -k start
ubuntu    9330  0.1  4.8 235480 29356 ?        S    23:01   0:00 /usr/sbin/apache2 -k start

为什么这里有这么多流程?所有这些流程都在做什么?有没有办法让这个更有效率?

2 个答案:

答案 0 :(得分:1)

这可能取决于您正在使用的Apache工作者,但Apache可能会为每个传入连接使用单独的进程。为了快速提供传入连接,它会使一组连接处理程序保持打开状态,这就是为什么有这么多进程的原因。

内存使用水平将是因为,无论用户数量多少,Apache都必须保留您的所有/大部分应用程序,Django,Python以及您在内存中使用的任何第三方应用程序,以便能够为网站有效。

答案 1 :(得分:0)

对于您的情况,这是由于您的配置造成的。尝试使用配置上的StartServers,MinSpareServers和MaxSpareServers进行简单调整。有关调整的更多信息和选项,请参阅here

此外,您运行'free'命令,您可以看到62%的大部分内存都被缓存为缓冲区,因为apache可以更快地提供服务。 如果您需要,它将分配给您的应用程序,缓冲区将被删除