我在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
为什么这里有这么多流程?所有这些流程都在做什么?有没有办法让这个更有效率?
答案 0 :(得分:1)
这可能取决于您正在使用的Apache工作者,但Apache可能会为每个传入连接使用单独的进程。为了快速提供传入连接,它会使一组连接处理程序保持打开状态,这就是为什么有这么多进程的原因。
内存使用水平将是因为,无论用户数量多少,Apache都必须保留您的所有/大部分应用程序,Django,Python以及您在内存中使用的任何第三方应用程序,以便能够为网站有效。
答案 1 :(得分:0)
对于您的情况,这是由于您的配置造成的。尝试使用配置上的StartServers,MinSpareServers和MaxSpareServers进行简单调整。有关调整的更多信息和选项,请参阅here
此外,您运行'free'命令,您可以看到62%的大部分内存都被缓存为缓冲区,因为apache可以更快地提供服务。 如果您需要,它将分配给您的应用程序,缓冲区将被删除。