Reduzir o "throttle rebake" para evitar ficar sem memória?

Estou tentando reprocessar 45 mil publicações porque alterei a URL do CDN do S3 e ele continua ficando sem memória e sendo encerrado.

Li isto sobre como configurar um arquivo de troca (swapfile)…

Os dois primeiros comandos correram bem…

  1. Criar um arquivo de troca vazio
    install -o root -g root -m 0600 /dev/null /swapfile

  2. Escrever um arquivo de 2GB chamado ‘swapfile’
    dd if=/dev/zero of=/swapfile bs=1k count=2048k

Mas depois em mkswap /swapfile deu-me um erro…

Erro mkswap swapfile está montado, não criará espaço de troca

Tentei isto em vez disso…

swapoff /swapfile && rm /swapfile

e recebi este erro…

swapoff: Não é superusuário

Estou num Droplet da Digital Ocean, então acho que não tenho as permissões necessárias para isso?

Encontrando esses obstáculos, tentei apenas reprocessar as publicações não cozidas executando…

rake posts:rebake_uncooked_posts

Ele executará algumas centenas, talvez alguns milhares se eu tiver sorte, e depois será encerrado novamente. Depois de vigiá-lo desde ontem, estou meio cozido. :wink:

Existe uma maneira de executar um comando de reprocessamento que seja limitado (throttled)? Não me importo se demorar um pouco, durante a noite ou o que for, eu só quero que pare de falhar.

Qualquer ajuda seria muito apreciada.

Estranhamente, deixei o não cozido rodando novamente enquanto escrevia tudo aquilo. Fui almoçar com alguns amigos e voltei e ele estava 100% concluído. Não sei se o arquivo de troca finalmente começou a funcionar ou se foi apenas uma coincidência de baixo uso de tempo, mas…

concluído, finalmente!

Talvez se alguém tiver uma resposta, possa ajudar outra pessoa ou a mim na próxima vez.

No Ubuntu:

Sudo -i

No Debian

Su -

1 curtida

Obrigado. Não tenho certeza se fiz certo ou não.

Isso não parece certo. Quais instruções você está seguindo?

E por que você está criando swap dentro do contêiner? O swap deve ser criado no host, não dentro do contêiner.

Porque eu só sei minimamente o que estou fazendo. :wink:

Então isso é no nível base ubuntu: e não nos níveis ubuntu:/var/discourse ou ubuntu-app:/var/www/discourse?

Alguma ideia sobre a limitação de re-rebake (rebake throttling)?

1 curtida

Eu nunca vi o rebake ser estrangulado, ele é assíncrono, ele enfileira os trabalhos que são processados em segundo plano.

1 curtida

OK, obrigado. O meu terminou o rebake por agora, então vou me considerar com sorte e parar de mexer nele. :smiley:

Aviso :warning:: não faça as coisas cegamente em um site de produção, há uma grande chance de as coisas darem errado sem nenhuma maneira real de recuperá-las.

Não, não é no nível ubuntu:.

Você executou ./launcher enter app antes de tentar criar o swap? Se sim, é isso que você não deveria ter feito.

Quando você acessa seu servidor pela primeira vez é o host, quando você entra no app, você está executando ações dentro do contêiner.

O swap precisa ser criado no host, a aplicação vive dentro do contêiner, é isso que você acessará para executar o comando rebake.

OK, obrigado pela orientação.

Nosso fórum é apenas um grupo de amigos e tem bons backups, então se eu o deixar inativo por uma semana ou mais, teremos que aguentar o GroupMe. :wink:

Isso significa que você já tem um arquivo de troca (swapfile), ele se chama /swapfile e está em uso.

Se você quiser aumentá-lo, você pode parar seu contêiner, desmontá-lo, e então usar aquele comando dd para aumentá-lo, e depois o comando mkswap.

Se outra pessoa ler isto, a maneira que eu faço é usar grep swap discourse-setup e olhar os comandos lá. É uma versão um pouco mais fácil do que fazer.

3 curtidas

Eu frequentemente sirvo como um aviso.

Obrigado pela adição.

1 curtida

Não sei quanto a você, mas eu estava repetidamente ficando sem memória durante um longo processo de rebake (remodelação). Criar um swap de 2 GB melhorou (mais publicações foram remodeladas), mas ainda assim deu OOM (Out of Memory - Fora de Memória) depois de um tempo. Aumentei o swap para 4 GB e consegui remodelar todas as minhas publicações.

Eu não sabia nada sobre arquivos swap além deste guia Create a swapfile for your Linux server, mas o chatGPT foi experiente o suficiente para me ajudar a aumentar meu swap sem problemas.

3 curtidas

Um problema para mim é que eu não tenho uma boa noção do que precisa ser feito em qual área. Dentro ou fora do contêiner ou dentro ou fora do aplicativo. Eu tento manter boas anotações e tenho atalhos mentais para as coisas que usarei novamente. Mas assim que começo a entender, termino o que preciso fazer e não toco nisso novamente por mais 6 a 12 a 18 meses. Então, eu tenho que meio que reaprender.

Parece a história da vida de todo administrador de sistema :joy:

Minha solução é fazer anotações e depois criar um pequeno tutorial aqui no meta

Eu o transformo em uma wiki para que outros possam editá-lo se encontrarem algum erro ou omissão e, da próxima vez que eu precisar fazer a mesma coisa…

1 curtida