2014-03-13 120 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/