Sistema Linux completamente sem resposta com muito espaço de troca livre

Sistema Linux completamente sem resposta com muito espaço de troca livre

Tenho um serviço .NET (Core 2.0) que mudei de instâncias do Windows para Linux na AWS. As instâncias são micro com 1 Gb de RAM.

Adicionei 1 Gb de espaço de troca à instância do Linux e também configurei swappiness=100, mas o servidor congela quando a memória física é preenchida. O processo em si fica quase parando e até mesmo pressionar ENTER no bash às vezes leva 10 segundos para que a nova linha apareça.

Executando topvejo a memória livre geralmente 10, 20mb. O processo usa mais de 800 MB de RAM e o swap está sempre quase vazio, com uso máximo de 20 MB. Mesmo deixando lá por uma hora não trocou mais.

Posso ver que os créditos de disco e CPU na AWS estão em quase 100%, portanto, isso não limita o uso de recursos. Além disso, existem cerca de cem dessas instâncias, e eu as substituí várias vezes, o comportamento é sempre o mesmo, então não parece uminstância ruimproblema.

O que me incomoda é que isso não acontecia no Windows, e as instâncias do Linux usam cerca de 200 MB a menos de memória para o sistema básico.

Existe alguma configuração que preciso ajustar além da troca para fazer o Linux mover mais memória para troca?

Editar:O swap é configurado corretamente por meio do cloud-init e sobrevive bem às reinicializações:

Configurar:

fallocate -l 1024M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sysctl vm.swappiness=100

free -mapós a inicialização:

             total       used       free     shared    buffers     cached
Mem:           993        232        760          0          7        152
-/+ buffers/cache:         72        921
Swap:         1023          0       1023

Responder1

Eu encontrei o verdadeiro problema. O aplicativo está sendo executado dentro do docker eAWS bloqueia deliberadamente o uso de swap em contêineres ECSpor algum motivo. Este bloqueio não afetou o Windows porque não usávamos o ECS para gerenciar o docker antes.

Depois de conversar com o suporte, eles não suportam troca dentro de contêineres e não sabem quando o farão. Então, terei que sair do ECS e gerenciar o docker sozinho.

Responder2

Bem, seu erro pode ser bem pequeno. Esse alto valor de troca causará problemas com algumas configurações do sistema operacional. Tente um valor como 15. (Apenas uma observação: forçar seu sistema a preferir swap é uma ideia horrível. Seu sistema precisa usar RAM real para funcionar normalmente. [caso você não soubesse ou revertesse, swappiness é a% de RAM livre antes que o swap seja usado, então 15 é que 85% da RAM deve ser usada antes da partição SWAP ser usada.])

Além disso, como você adicionou espaço de troca? Se você acabou de alterar as configurações e não criou uma nova partição, ou deixou erros em seu arquivo /etc/fstab, você não poderá usar o swap e o inferno interromperá o uso enquanto o sistema tenta gravar em algo que não está lá ou não pode escrever (ou algo muito mais interessante acontecerá). Eu quebrei mais de uma instalação por meio desses métodos.

informação relacionada