可能重复:
LINUX 中的内存使用情况
我使用 Debian 服务器已有 6 天了。它消耗了大量内存 - 目前可用内存为 4GB,其中 2GB 可用。它每天都会保留接下来的 100 MB。
以下是 top 命令的内容(按 res 列排序):
top - 00:50:27 up 6 days, 8:27, 1 user, load average: 0.03, 0.04, 0.06
Tasks: 116 total, 1 running, 115 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.8%us, 0.1%sy, 0.0%ni, 98.0%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3972480k total, 1984072k used, 1988408k free, 356180k buffers
Swap: 7815612k total, 0k used, 7815612k free, 1404292k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6790 mysql 20 0 147m 23m 5796 S 0 0.6 20:59.79 mysqld 6320 root 20 0 13496 9476 1700 S 0 0.2 0:12.96 miniserv.pl
26855 root 20 0 22636 7768 4684 S 0 0.2 0:14.16 apache2 28866 www-data 20 0 23424 7428 3380 S 0 0.2 0:00.80 apache2 28953 www-data 20 0 23424 7404 3360 S 0 0.2 0:00.68 apache2
29010 www-data 20 0 23440 7400 3328 S 0 0.2 0:00.40 apache2 29047 www-data 20 0 23424 7372 3308 S 2 0.2 0:00.30 apache2 28903 www-data 20 0 23176 7144 3360 S 0 0.2 0:00.76 apache2
28950 www-data 20 0 23168 7136 3356 S 0 0.2 0:00.50 apache2 29071 www-data 20 0 23176 7136 3356 S 0 0.2 0:00.12 apache2 29001 www-data 20 0 23076 7132 3392 S 0 0.2 0:00.52 apache2
29002 www-data 20 0 23168 7132 3356 S 0 0.2 0:00.42 apache2 29041 www-data 20 0 23072 7116 3396 S 0 0.2 0:00.34 apache2 29049 www-data 20 0 23304 7116 3308 S 1 0.2 0:00.32 apache2
29064 www-data 20 0 23308 7112 3312 S 0 0.2 0:00.18 apache2 29061 www-data 20 0 23168 7108 3348 S 0 0.2 0:00.08 apache2 29063 www-data 20 0 23184 7100 3340 S 0 0.2 0:00.08 apache2
28637 www-data 20 0 23180 7092 3384 S 1 0.2 0:01.62 apache2
28989 www-data 20 0 23076 7092 3356 S 0 0.2 0:00.48 apache2
28980 www-data 20 0 23168 7084 3364 S 1 0.2 0:00.48 apache2
28985 www-data 20 0 23076 7084 3360 S 0 0.2 0:00.66 apache2
28967 www-data 20 0 23076 7080 3360 S 0 0.2 0:00.60 apache2
29004 www-data 20 0 23076 7072 3360 S 0 0.2 0:00.28 apache2
29011 www-data 20 0 23076 7072 3356 S 0 0.2 0:00.26 apache2
29080 www-data 20 0 23168 7072 3296 S 0 0.2 0:00.10 apache2
28968 www-data 20 0 23064 7068 3372 S 0 0.2 0:00.56 apache2
28984 www-data 20 0 23180 7068 3356 S 1 0.2 0:00.52 apache2
28983 www-data 20 0 23064 7060 3356 S 0 0.2 0:00.44 apache2
29046 www-data 20 0 23064 7056 3340 S 0 0.2 0:00.28 apache2
29069 www-data 20 0 23184 7056 3356 S 0 0.2 0:00.18 apache2
29044 www-data 20 0 23172 7052 3352 S 0 0.2 0:00.16 apache2
29042 www-data 20 0 23180 7040 3344 S 0 0.2 0:00.30 apache2
29073 www-data 20 0 23312 7040 3296 S 0 0.2 0:00.10 apache2
29050 www-data 20 0 23064 7036 3340 S 0 0.2 0:00.24 apache2
29008 www-data 20 0 23072 7028 3352 S 0 0.2 0:00.32 apache2
29057 www-data 20 0 23056 7028 3340 S 1 0.2 0:00.24 apache2
29087 www-data 20 0 23168 7020 3296 S 0 0.2 0:00.00 apache2
29070 www-data 20 0 23168 7012 3356 S 0 0.2 0:00.06 apache2
29074 www-data 20 0 23168 7004 3312 S 0 0.2 0:00.08 apache2
29054 www-data 20 0 23168 6996 3312 S 0 0.2 0:00.04 apache2
29078 www-data 20 0 23168 6992 3308 S 0 0.2 0:00.08 apache2
29084 www-data 20 0 23168 6920 3280 S 0 0.2 0:00.00 apache2
29076 www-data 20 0 23168 6860 3276 S 0 0.2 0:00.00 apache2
29085 www-data 20 0 23168 6856 3276 S 0 0.2 0:00.00 apache2
29083 www-data 20 0 23168 6820 3276 S 0 0.2 0:00.00 apache2
29081 www-data 20 0 22636 4240 1124 S 0 0.1 0:00.00 apache2
29082 www-data 20 0 22636 4240 1124 S 0 0.1 0:00.00 apache2
29086 www-data 20 0 22636 4240 1124 S 0 0.1 0:00.00 apache2
29088 www-data 20 0 22636 3676 584 S 0 0.1 0:00.00 apache2
20360 root 20 0 8160 2608 2144 S 0 0.1 0:00.06 sshd
8166 root 20 0 28164 1348 956 S 0 0.0 0:00.77 rsyslogd
6753 root 20 0 2848 1328 1084 S 0 0.0 0:00.00 mysqld_safe
6617 root 20 0 5416 1016 660 S 0 0.0 0:00.12 sshd
2157 root 20 0 2560 992 804 S 0 0.0 0:00.02 cron
4285 Debian-e 20 0 6256 900 600 S 0 0.0 0:00.00 exim4
1104 root 16 -4 2288 800 488 S 0 0.0 0:00.06 udevd
1 root 20 0 2104 688 588 S 0 0.0 0:03.80 init
6791 root 20 0 1752 528 456 S 0 0.0 0:00.00 logger
2188 root 20 0 1768 508 436 S 0 0.0 0:00.00 getty
2190 root 20 0 1768 508 436 S 0 0.0 0:00.00 getty
答案1
这是正常的。当您的机器运行时,如果没有进程需要内存,那么该内存将用于“磁盘缓存”。
这实际上意味着其他任何东西都不需要的内存将用于缓存从磁盘获取的文件,以减少对磁盘 IO 的需求。
您可能还想查看 apache 配置中的参数
MaxClients
MaxRequestsPerChild
这两个将帮助您调整 apache 的消耗量。
第一个参数设置 apache 可以同时处理多少个连接。第二个参数定义每个线程在处理多少个请求后将被回收。这意味着当您将 apache 配置设置为“MaxRequestsPerChild 100”并且一个线程处理了 100 个请求时,它将被销毁,新的 apache 线程将取代它。这如何影响内存使用,每次处理请求时内存打印都会增加,因为请求的某些部分会保留在内存中以获得更好的性能。
所以如果你有很高的 MaxRequestsPerChild,那么随着时间的推移,你可能会得到非常高的 apache 线程内存使用率,这可能会导致 OOM killer 激活并杀死随机 pid 并使你的机器瘫痪,所以你在推动这个值时需要小心。
回到一般的内存使用情况,随着时间的推移,所有内存都将被“使用”,但这是期望的行为,因为从 RAM 获取东西比从磁盘获取东西更快,所以当您看到所有内存都被使用,并且其中很多都被“缓存”时,不用担心,如果某个进程需要内存并且没有找到可用内存,则缓存将变小,并且缓存中的某些内容将被刷新,以允许进程分配所需的内存。