几个月以来,我的物理共享托管服务器一直存在问题。我的专用服务器有 24Gb RAM,具有 8 核 CPU。我有内存泄漏的问题。可能是设置有问题,或者是硬件配置有问题。我需要找到原因。重新启动服务器后,我有大约 22Gb 的可用 RAM,然后在白天,它的时间都会增加。我正在通过 top、sar、ps 其他任务管理器观看,但我找不到任务,这完全占用了内存。现在,我的 24Gb 可用内存只剩下约 40Mb。 swap 仅 512 mb,但 sar 显示了其使用量的 0.2%。
root@srv [~]# free -m
total used free shared buffers cached
Mem: 24149 23689 459 0 2958 17862
-/+ buffers/cache: 2868 21280
Swap: 513 0 512
还有顶级结果:
Mem: 24728844k total, 24463380k used, 265464k free, 3029508k buffers
Swap: 525916k total, 816k used, 525100k free, 18316304k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6307 someuser 20 0 151m 55m 6068 S 18.0 0.2 0:00.54 php
6313 someuser 20 0 144m 50m 5908 R 12.3 0.2 0:00.37 php
6316 someuser 20 0 141m 46m 5700 R 9.3 0.2 0:00.28 php
6991 mysql 20 0 545m 249m 5740 S 9.0 1.0 24:41.08 mysqld
6310 someuser 20 0 713m 62m 30m S 7.6 0.3 0:00.23 php
25 root 20 0 0 0 0 S 0.3 0.0 0:07.15 ksoftirqd/6
5012 nobody 20 0 71220 5580 1868 S 0.3 0.0 0:00.04 httpd
6036 nobody 20 0 71372 5640 1768 S 0.3 0.0 0:00.01 httpd
6056 root 20 0 12804 1228 840 R 0.3 0.0 0:00.05 top
我知道,有些应用程序会使用大量内存,但是它们在哪里呢?停止 Apache 或 MySQL 也没有帮助。我有另一台具有 64Gb RAM 的服务器。经过大约一周的可中断运行和艰苦使用后,64Gb 的可用容量约为 30Gb。为什么这样?如何计算物理内存\已用缓冲区等之间的比率?以及如何减少呢?如何真正确定每个应用程序使用了多少资源?如果我安装一个需要例如的应用程序会怎样? 6GB 内存?
最佳答案
Linux 积极使用空闲内存作为缓存和缓冲区。如果您的应用程序需要该内存,内核会很乐意将其移交。
查看 free -m
的输出的第 3 行,即标记为 -/+ buffers/cache:
的行——这就是最准确地表示有多少内存是“空闲”的。
关于mysql - CentOS 内存使用情况。已使用约 22GB RAM(22GB 可用内存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22392667/