Как чтобы точно измерить использование памяти на сервере Elastic Beanstalk / EC2?

У меня есть эластичная среда beanstalk, на которой запущен сервер nodejs. Я пытаюсь измерить использование памяти, чтобы определить, какой тип экземпляра наиболее подходит и сколько памяти нам действительно нужно. Для этого я подключился к серверу через ssh в то время, когда использование сервера достигло пика, и выполнил команды free и top , получив следующие результаты:

top:

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND  
27607 nodejs    20   0  944m 146m  27m S  15.2  3.9  25:04.26 node               
 2384 root      24   4  626m 118m 8932 S   0.7  3.2  67:34.94 aws                
 3235 root      20   0  524m  29m 8628 S   0.3  0.8   6:19.01 cfn-hup            
17626 nginx     20   0 68964  14m 3728 S   0.3  0.4   8:07.17 nginx              
31893 ec2-user  20   0 15364 2116 1828 R   0.3  0.1   0:00.02 top                
    1 root      20   0 19692 2672 2252 S   0.0  0.1   0:02.18 init

(у всего остального% mem было 0,0)

free:

             total       used       free     shared    buffers     cached
Mem:       3824772    3654360     170412         60     108792    2956936
-/+ buffers/cache:     588632    3236140
Swap:            0          0          0

Итак, free , похоже, указывает на использование памяти 95,5%, но менее 4% используется процессом nodejs , а все процессы в top в сумме составляют всего 8,5%. Что именно здесь происходит? Куда идут остальные 87%? Должен ли я использовать меньший экземпляр, исходя из того факта, что процесс nodejs использует только 4% памяти и 15% процессора? Или мне нужен более крупный экземпляр, учитывая тот факт, что использование памяти уже составляет 95,5%? Если бы объем трафика увеличился настолько, что использование памяти процессом nodejs утроилось, у сервера закончилась бы память и произошел сбой, или он перераспределил бы часть этих таинственных 87% процессу nodejs?

0
задан 20 December 2019 в 04:16
1 ответ

Управление памятью в Linux может мало сбивать с толку некоторых людей, которые не знакомы с ним. В основном несколькими вещами, которые могут прибыть для проигрывания здесь, является или запуск шаров-зондов виртуальной памяти, или ядро использовало память для различных задач и процессов, но еще не освободило ее. Если Ваш процесс node.js потребовал большей памяти, то ядро может освободить его для использования для приложения.

Вы видите в своем выводе в 2-й строке 'свободных', что - / + буферы/кэш у Вас есть свободные 3 236 140 КБ памяти (3.2 ГБ). Большая часть этой памяти может быть доступна Вашему приложению в случае необходимости.

- / + буферы/кэш: 588632 3236140

2
ответ дан 31 December 2019 в 13:07

Теги

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