2

Я получил VPS и Ubuntu поверх него. Я установил apache в рабочей роли (не prefork), также установил ruby EE 1.8.7 & mysql 5.x

Теперь, когда я проверяю память, я вижу, что стойка использует 18,6% (из 924 МБ) (должно быть приложение rails, которое я использую)

и когда я делаю бесплатно -m, я получаю следующие результаты:

             total       used       free     shared    buffers     cached
Mem:           924        602        322          0          0          0
-/+ buffers/cache:        602        322
Swap:            0          0          0

где моя память израсходована? free -m показывает всю используемую память, мой кеш и ничего больше, как это возможно? У меня нет пользователей для сайта на данный момент.

AUX не показывает ничего интересного, кроме 18,6% по стойке и 2,6% по mysql.

Как только я закрываю свой экземпляр apache, память уменьшается до 150 МБ.

Список загруженных модулей Apache:

 core_module (static)
 log_config_module (static)
 logio_module (static)
 mpm_worker_module (static)
 http_module (static)
 so_module (static)
 alias_module (shared)
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgid_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 status_module (shared)
 passenger_module (shared)

Это результат cat /proc/meminfo

MemTotal:       946344 kB
MemFree:        336624 kB
Buffers:             0 kB
Cached:              0 kB
SwapCached:          0 kB
Active:              0 kB
Inactive:            0 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       946344 kB
LowFree:        336624 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:               0 kB
Writeback:           0 kB
AnonPages:           0 kB
Mapped:              0 kB
Slab:                0 kB
PageTables:          0 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:         0 kB
Committed_AS:        0 kB
VmallocTotal:        0 kB
VmallocUsed:         0 kB
VmallocChunk:        0 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB

2 ответа2

3

Есть несколько причин поведения, которое вы видите. Первый:

  • ps aux's% основан на резиденте:

    %mem       %MEM    ratio of the process's resident set size  to the physical memory on the machine, expressed as a percentage. (alias pmem).
    
  • Отчет free включает в себя вещи, отличные от активной памяти (резидент /% MEM от пс) при отображении значений

Суть этого в том, что когда вы смотрите на бесплатный, вы видите VSZ и другие распределения, добавляемые при отображении итогов. Когда вы смотрите на% в пс, вы видите только часть головоломки.

Чтобы убедиться в этом, вы можете посмотреть на две вещи, сначала запустите:

$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
www      18442  0.0  0.0 519156 65460 ?        Sl   Sep08   1:47 httpd

Вы должны увидеть, что VSZ будет значительно больше, чем RSS, и если вы сделаете это, вычисления, вероятно, дадут гораздо больший%, если он будет включен.

Во-вторых, вы можете проверить реальный объем используемой памяти, посмотрев непосредственно в /proc /meminfo:

# cat /proc/meminfo 
MemTotal:       99197880 kB
MemFree:        72697684 kB
Buffers:        13813488 kB
Cached:          4841820 kB
SwapCached:          196 kB
Active:          4662952 kB
...

Вы заметите, что столбец «используется» из бесплатных это больше, чем просто Active(примерно RSS от PS).

Фактическое объяснение, почему это так, на самом деле представлено в сборнике из нескольких книг, которые очень хорошо читаются, если вы пытаетесь заснуть, но вы можете получить некоторое базовое понимание из пары статей:

Meminfo:http://www.redhat.com/advice/tips/meminfo.html

PS / Virtual и VSZ объяснил:http://virtualthreads.blogspot.com/2006/02/understanding-memory-usage-on-linux.html

1

Если отключение Apache освобождает 450 Мб (примерно половину вашей памяти), тогда начните смотреть на Apache. Посмотрите, что модули, которые он загружает при запуске, любые связанные с ним окружения и любая память, потребляют ответы на запросы. Вы можете использовать модуль с небольшим объемом памяти или утечкой в вашем приложении. Также посмотрите на количество рабочих при запуске и размер рабочего пула.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .