0

我有一个在 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

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

4

2 回答 2

1

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

内存使用水平将是因为,无论用户数量如何,Apache 都必须将所有/大部分应用程序、Django、Python 和您正在使用的任何第三方应用程序保留在内存中,以便能够有效地为站点提供服务。

于 2012-05-18T23:20:44.403 回答
0

对于您的情况,这是由于您的配置引起的。尝试在您的配置中使用 StartServers、MinSpareServers 和 MaxSpareServers 来调整它。有关调整的更多信息和选项,请参见此处

此外,如果您运行“免费”命令,您可能会看到大部分 62% 的内存被缓存为缓冲区,以便 apache 准备好更快地服务。如果您需要它,它将分配给您的应用程序,并且缓冲区将被删除

于 2012-05-19T15:36:43.850 回答