почему вся моя память израсходована менее чем через 24 часа после перезагрузки?

Запустив Ubuntu Server 12.04, meminfo показывает почти всю используемую память:

$ cat /proc/meminfo
MemTotal:        8173180 kB
MemFree:          139556 kB
Buffers:         1146204 kB
Cached:          3062088 kB
SwapCached:           28 kB
Active:          4181280 kB
Inactive:        2175224 kB
Active(anon):    1824800 kB
Inactive(anon):   329536 kB
Active(file):    2356480 kB
Inactive(file):  1845688 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:      11719380 kB
SwapFree:       11719068 kB
Dirty:               160 kB
Writeback:             0 kB
AnonPages:       2148472 kB
Mapped:            98200 kB
Shmem:              6128 kB
Slab:            1509448 kB
SReclaimable:    1463828 kB
SUnreclaim:        45620 kB
KernelStack:        4504 kB
PageTables:        37756 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    15805968 kB
Committed_AS:    2828504 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      295632 kB
VmallocChunk:   34359432032 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      195904 kB
DirectMap2M:     8187904 kB

Это было через несколько часов после перезагрузки. Память быстро потреблялась. Когда я запускаю top, первые 5 записей выглядят так:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                
20011 myuser    20   0  654m 406m 3584 S    2  5.1   3:38.71 ruby                                    
 1311 root      20   0     0    0    0 S    0  0.0   3:50.95 jbd2/sda3-8                             
20633 root      20   0     0    0    0 S    0  0.0   0:02.82 kworker/7:3                             
27547 myuser    20   0 17468 1492 1044 R    0  0.0   0:00.07 top                                     
    1 root      20   0 24728 2672 1380 S    0  0.0   0:01.28 init                                    
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd 

Так что только ruby ​​в настоящее время использует память.

Я могу разбить это далее между phusion passenger (модуль для apache) и apache:

------ Passenger processes ------
PID    VMSize     Private   Name
---------------------------------
4088   218.3 MB   0.3 MB    PassengerWatchdog
4092   1271.8 MB  2.9 MB    PassengerHelperAgent
4099   230.6 MB   1.0 MB    PassengerLoggingAgent
7143   317.8 MB   90.3 MB   Passenger RackApp: /home/mysite/public_html/store.mysite.com/current
14841  654.3 MB   414.2 MB  Passenger RackApp: /home/mysite/public_html/staging.mysite.com/current
17393  718.3 MB   444.1 MB  Passenger RackApp: /home/mysite/public_html/staging.mysite.com/current
20004  526.2 MB   231.3 MB  Passenger RackApp: /home/mysite/public_html/staging.mysite.com/current
20011  654.1 MB   340.6 MB  Passenger RackApp: /home/mysite/public_html/staging.mysite.com/current
20018  462.2 MB   150.9 MB  Passenger RackApp: /home/mysite/public_html/staging.mysite.com/current
### Processes: 9
### Total private dirty RSS: 1675.62 MB

Работники Apache:

lynx http://localhost/server-status

   Total accesses: 4452 - Total Traffic: 19.3 MB
   CPU Usage: u.31 s.21 cu0 cs0 - .000612% CPU load
   .0524 requests/sec - 238 B/second - 4556 B/request  
   10 requests currently being processed, 5 idle workers

_WW_W__WWWW..W.W..._W...........................................
................................................................
................................................................
................................................................

$ ps aux | grep apache2 | grep -v pts | awk '{ tot += $6; procs += 1; print $2,$6,$11  } END { print "TOTAL: ",tot,"/",procs,"=",tot/procs }'
4084 23068 /usr/sbin/apache2
7089 13496 /usr/sbin/apache2
11074 13668 /usr/sbin/apache2
14848 13288 /usr/sbin/apache2
16562 13508 /usr/sbin/apache2
16565 13248 /usr/sbin/apache2
17527 13832 /usr/sbin/apache2
21656 13516 /usr/sbin/apache2
23567 13508 /usr/sbin/apache2
24407 13508 /usr/sbin/apache2
25506 13256 /usr/sbin/apache2
26736 13540 /usr/sbin/apache2
26742 13288 /usr/sbin/apache2
27526 13512 /usr/sbin/apache2
27729 13036 /usr/sbin/apache2
28198 13032 /usr/sbin/apache2
TOTAL:  224304 / 16 = 14019

Как вы можете видеть, Пассажиры Apache / Phusion не используют почти 8 ГБ оперативной памяти. Что здесь может происходить?

1
задан 6 May 2014 в 19:59

2 ответа

Это не может быть фактическая физически используемая RAM, а скорее Дисковый кэш. Дисковый кэш - то, где любые часто используемые файлы хранятся в RAM, таким образом, они могут легко быть получены снова быстро, не будучи должен ожидать на диске (который является путем медленнее, чем ожидание RAM). Можно обычно говорить, сколько RAM на самом деле используется для приложений с помощью второй строки эти free команда.

Вот пример:

            total       used       free     shared    buffers     cached
Mem:         12925       1221      11704         35         32        468
-/+ buffers/cache:        720      12205
Swap:            0          0          0

В этом примере я физически использую 720 МБ поршня моих 13 ГБ, но с дисковым кэшем это составляет общее количество 1221 МБ. Через некоторое время мое Использование оперативной памяти увеличится, потому что дисковый кэш увеличится, но Использование оперативной памяти реального приложения не может.

я надеюсь, что это лучше объясняет вещи.

0
ответ дан 6 May 2014 в 19:59

Из Вашего сообщения: Cached: 3062088 kB

Это - действительно не беспокойство. Ваше использование подкачки является очень низким.

SwapTotal:      11719380 kB
SwapFree:       11719068 kB

Это означает, что подавляющее большинство работы выполняется очень эффективно в RAM

0
ответ дан 6 May 2014 в 19:59

Другие вопросы по тегам:

Похожие вопросы: