killer OOM mata processo embora cache de página nunca é despejado

1

Nossos servidores em produção, às vezes com carga, encontram o seguinte problema (Linux 4.10):

  1. O aplicativo que manipula o carregamento (servidor da Web) está sendo executado em alta carga.
  2. Um novo trabalho é iniciado (por exemplo, cron). Isso requer uma chamada de sistema clone (), que não aloca memória.
  3. O Kernel OOM killer é iniciado e mata um dos processos do aplicativo do servidor da Web, para que o novo trabalho possa ser iniciado.
  4. "free -m" mostra que a memória livre está criticamente baixa, cerca de 1-3 GB dos 64 GB no servidor. No entanto, a maior parte da memória está no cache de páginas.
  5. O sistema não possui nenhuma configuração de partição / arquivo de troca e o vm.swappiness está configurado para seu valor padrão de 60.

Em vez disso, se tivéssemos executado "echo 3 > / proc / sys / vm / drop_caches" antes do carregamento ser iniciado, o OOM não acabará com nosso aplicativo de servidor web e tudo funcionará bem.

Nas condições acima, o kernel não libera o cache de páginas antes de tentar matar um processo para liberar alguma memória?

    
por Confused 22.02.2018 / 16:05

0 respostas