Quando atualizar a RAM com base na saída livre

Quando atualizar a RAM com base na saída livre

Eu tenho um aplicativo Java que roda em um servidor Linux com memória física (RAM) alocada como 12 GB, onde veria a utilização normal durante um período de tempo conforme abaixo.

sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G        7.8G        1.6G        9.0M        2.2G        3.5G
Swap:            0B          0B          0B

Recentemente, ao aumentar a carga do aplicativo, pude ver que a utilização da RAM está quase cheia e o espaço disponível é muito menor, onde posso enfrentar alguma lentidão, mas ainda assim o aplicativo continua funcionando bem.

sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G         11G        134M         17M        411M        240M
Swap:            0B          0B          0B
sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G         11G        145M         25M        373M        204M
Swap:            0B          0B          0B

eu me referihttps://www.linuxatemyram.com/onde sugeriu o ponto abaixo.

Sinais de avisode uma situação genuína de pouca memória que você pode querer investigar:

  • a memória disponível (ou "livre + buffers/cache") é próxima de zero
  • swap usado aumenta ou flutua.
  • dmesg | grep oom-killer mostra o assassino OutOfMemory em ação

Pelos pontos acima, não vejo nenhum problema de OOM no nível do aplicativo e a troca também foi desabilitada. negligenciando assim os dois pontos. Um ponto que me preocupa é que a memória disponível é menor que zero, onde preciso de um esclarecimento

Questões:

  1. Caso a disponibilidade esteja próxima de 0, isso resultará em uma falha do sistema?
  2. Isso significa que preciso atualizar a RAM quando a memória disponível for menor?
  3. Com que base a memória RAM deve ser alocada/aumentada?
  4. Temos alguma recomendação/diretriz oficial que precisa ser seguida para alocação de memória RAM?

Responder1

Capaz de obter uma resposta para uma minha pergunta

Caso a disponibilidade esteja próxima de 0, isso resultará em uma falha do sistema?

Em testes em um dos meus servidores, onde carreguei a memória quase cheia conforme abaixo

sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G         11G        135M         25M        187M         45M
Swap:            0B          0B          0B

Capaz de ver meu aplicativo sozinho (que consumiu mais memória) foi eliminado pelo assassino de falta de memória, que pode ser consultado nos logs do kernel

dmesg -e

[355623.918401] [21805] 553000 21805 69 21 2 0 0 rm
[355623.921381] Out of memory: Kill process 11465 (java) score 205 or sacrifice child
[355623.925379] Killed process 11465 (java), UID 553000, total-vm:6372028kB, anon-rss:2485580kB, file-rss:0kB, shmem-rss:0kB

https://www.kernel.org/doc/gorman/html/understand/understand016.html

O Out Of Memory Killer ou OOM Killer é um processo que o kernel do Linux emprega quando o sistema está criticamente com pouca memória. Esta situação ocorre porque o kernel do Linux alocou memória demais para seus processos. ... Isso significa que os processos em execução requerem mais memória do que a fisicamente disponível.

informação relacionada