2014-03-13 123 views
2

几个月来,我的物理共享主机服务器出现问题。我的8核CPU专用服务器上有24Gb的RAM。我有一个内存泄漏问题。可能会出现设置错误或硬件配置错误。我需要找到原因。在重启我的服务器之后,我拥有大约22GB的可用内存,然后在白天时间内,所有时间都在增加。我正在通过top,sar,ps等其他任务管理器观看,但我无法找到完全吃掉记忆的任务。现在我只有24Gb的大约40Mb的可用内存。只交换512 MB,但sar显示我的使用率为0.2%。CentOS内存使用情况。从22GB可用的大约22GB的RAM

[email protected] [~]# 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的内存?

+2

你只是'2868Mb' RAM使用('<1Mb'掉期)在这一刻http://www.linuxatemyram.com/ – zerkms

+0

嗨,你看新来的。这是一个有趣的问题......但不幸的是,它不适合堆栈溢出 - 它更多地针对编程问题。这个问题更适合SuperUser(http://superuser.com/) - 这是关于这种事情。我会将你的问题标记为在那里移动,但是对于我们忙碌的mod来说可能需要一些时间 - 如果你的问题很紧急,你可能想要在那里重新提出你的问题 –

回答

4

Linux积极地将可用内存用于缓存和缓冲区。如果你的应用程序需要这些内存,那么内核会很乐意把它交给你。

看从free -m的线路输出,一个标记-/+ buffers/cache: - 这是多少内存是“免费”最精确的表示。

参见:http://www.linuxatemyram.com/