Não posso reiniciar agora, reportarei assim que tiver a oportunidade. Levará pelo menos alguns dias.
Devo ficar alarmado? Tudo bem se eu tiver que alocar mais recursos.
Não posso reiniciar agora, reportarei assim que tiver a oportunidade. Levará pelo menos alguns dias.
Devo ficar alarmado? Tudo bem se eu tiver que alocar mais recursos.
Sim, você deveria se preocupar.
Você mal tem margem de manobra e quase não há espaço para cache em disco também.
Mas antes de alocar mais recursos, você deve tentar descobrir o que está causando esse uso de memória bastante extraordinário.
Não consigo fazer muito no momento, estou em movimento. Voltarei a trabalhar nisso neste fim de semana e definitivamente tentarei descobrir o que está acontecendo. Obrigado pela dica ![]()
Parece que foi apenas uma reinicialização pendente que estava causando isso. Consegui reiniciar o servidor e os números parecem muito, muito melhores a partir de agora
root@discourse:~# free
total used free shared buff/cache available
Mem: 3927308 977624 2246208 42880 703476 2646836
Swap: 2097148 0 2097148
Pode ser útil, se você se encontrar em uma situação semelhante novamente, perguntar ao discourse quais processos estão usando memória - a saída em
https://example.com/admin/upgrade#/processes
é classificada em ordem de uso de RAM. Isso, eu acho, mostrará apenas os processos em execução com o contêiner. Na linha de comando, você pode usar
ps aux | sort -nr -k 4 | head -22
ou similar, para ver o uso de todos os processos, incluindo aqueles em todos os contêineres.
Se uma reinicialização resolver um problema de falta de memória, há uma boa chance de você ter algum tipo de processo descontrolado em algum lugar que aumentará (talvez lentamente) até causar problemas.
Editar: Hmm, vejo que menciono a leitura de processos de acordo com o uso de RAM (RSS). Isso pode ser útil, mas neste caso, estamos mais interessados no uso de memória virtual: devemos estar classificando pela coluna VSZ, coluna 5, para isso.
Esta instância do Discourse foi configurada pela primeira vez há muitos anos, então talvez antes da verificação do swapfile ser feita. Eu apliquei manualmente essas linhas de código e o swapfile foi criado. Obrigado.
Para fazer o Docker usar o swapfile, preciso aplicar isso? Ou, qual é o objetivo dessa recomendação?
Encontrei isso que discute o que é vm.overcommit_memory, mas não faz sentido para mim por que qualquer alteração assim é necessária:
Isso tem a ver com a execução do Redis, não com a atualização do Discourse.
Eu acho que é mais do que isso - deixe-me tentar explicar. A recomendação vem do Redis, e o Redis a recomenda porque fazer fork de um processo exige muita memória virtual, e o Redis faz fork para realizar salvamentos em segundo plano, e ainda assim a memória virtual reivindicada nunca será necessária.
Isso é típico para muitas aplicações Unix: elas farão fork, mas não precisarão dobrar o uso de memória. Como isso é típico para muitas, e como esta é uma configuração do kernel que altera o comportamento de todos os processos em todos os contêineres, pode muito bem converter uma falha em um sucesso quando a memória virtual está sob pressão.
Nas instâncias pequenas e baratas que muitos de nós usamos, a memória virtual está frequentemente sob pressão. E especialmente durante atualizações ou reconstruções.
Portanto, alterar essa configuração pode muito bem se relacionar com o sucesso ou falha de uma atualização, especialmente se houve recentemente uma mudança que aumenta a demanda por memória virtual.
Como está configurado, o kernel rejeitará alocações que não pode satisfazer. Com esse ajuste, ele aceitará essas alocações, e a falha pode ser evitada, ou pode acontecer mais tarde, quando a alocação se tornar uso.
Se o total de sua RAM e swap for grande o suficiente, você nunca precisará alterar essa configuração. Se o seu total não for grande, alterá-la pode ajudar.
O comando free informará quanta swap está configurada e quanta dela está em uso. Acho que você descobrirá que ela estará em uso assim que executar esses comandos.
É para aumentar a quantidade de memória virtual disponível. (Ou seja, a soma de RAM e swap.) Se você ficar sem RAM, começará a ter problemas de desempenho. Mas se você ficar sem memória virtual, os processos falharão ao iniciar ou morrerão ou serão encerrados. Fica brutal.
Aqueles de nós com pouca RAM e pouco disco podem não ter a liberdade de adicionar muita swap, mas 2G parece ser um bom mínimo. (Se você tivesse 16G de RAM, talvez não precisasse de nenhuma swap, mas essa é outra história. É a soma dos dois que importa, quando o problema é as coisas falharem.)
Aha. Acho que entendi mais ou menos, mas essa é uma explicação muito boa. Então é por isso que tenho configurado isso em todas as instalações que fiz VMs que criei para clientes.
Gostaria de saber se devemos fazer o discourse-setup alterar essas configurações quando cria swap.
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.