内存被未知进程占用

内存被未知进程占用

我的 Web 服务器上的命令输出了一些奇怪的输出top。输出按 %MEM 排序:

top - 13:57:43 up 13 days, 21:58,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 118 total,   1 running, 117 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2854520k total,  *2767576k used*,    *86944k free*,   328060k buffers
Swap:  5574648k total,        0k used,  5574648k free,  2194252k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
 2528 mysql     20   0  136m  26m 6260 S    0  0.9   0:01.74 mysqld             
 2804 www       20   0 40732  15m 4412 S    0  0.6   0:00.72 apache2            
 2708 www       20   0 40724  14m 4060 S    0  0.5   0:00.13 apache2            
 2844 www       20   0 40696  14m 3984 S    0  0.5   0:00.26 apache2            
 2847 www       20   0 40696  14m 3960 S    0  0.5   0:00.12 apache2            
 2815 www       20   0 39816  14m 4240 S    0  0.5   0:00.58 apache2            
 7516 root      20   0 35264  14m 7776 S    0  0.5   0:11.79 apache2            
 1096 bind      20   0 51192 9504 2328 S    0  0.3   0:00.09 named              
 2838 www       20   0 35800 8852 1716 S    0  0.3   0:00.00 apache2            
 2846 www       20   0 35336 8440 1528 S    0  0.3   0:00.00 apache2            
 2850 www       20   0 35336 8440 1528 S    0  0.3   0:00.00 apache2            
 2849 www       20   0 35312 7960 1072 S    0  0.3   0:00.00 apache2            
 2891 www       20   0 35296 7772  892 S    0  0.3   0:00.00 apache2            
 1147 root      20   0 48532 6948 2300 S    0  0.2   0:00.09 lwresd                            
 1414 postgres  20   0 46444 5456 4640 S    0  0.2   0:08.90 postgres           
 1564 root      20   0 18512 5096 4280 S    0  0.2   0:02.96 smbd              

注意用过的自由的输出标题中的总数。

某些东西基本上占用了我所有的内存,但是这个输出似乎并不能帮助我诊断问题。

什么东西可能消耗了所有的内存?

服务器是安装了标准 LAMP 堆栈和 samba 的 Debian 5。

答案1

操作系统有大量的空闲内存,因此释放任何内存都是没有意义的。假设操作系统释放了一些内存,则会发生以下两种情况之一:

  1. 短期内不会有任何事物使用该内存。在这种情况下,释放内存是浪费时间,因为它不会被使用。

  2. 很快就会有东西使用该内存。在这种情况下,释放内存就是在浪费时间,因为系统必须再次使用它。

无论哪种情况,努力都是白费的。这就是为什么现代操作系统只有在别无选择的情况下才会释放内存。在这种情况下,操作系统还有另一种选择——它可以使用内存来保存最近从磁盘读取或写入的数据,希望某些东西需要再次访问这些数据,这样就可以省去磁盘访问。

如果你在想“我现在想释放内存,以便以后使用”,那就别想了。你现在可以使用它以后再用。没必要做出痛苦的权衡。

答案2

你的Linux只是缓存文件。

http://www.linuxatemyram.com/

相关内容