Olá a todos,
Tenho um problema e gostaria de contar com a ajuda de vocês. Tenho um servidor instalado com o Discourse usando o instalador baseado em Docker. Todos os dias, por volta do meio-dia, o servidor, por um motivo ainda desconhecido para mim, fica sobrecarregado e vejo a carga de E/S subir a ponto de o fórum começar a exibir erros 500.
O iotop sempre me diz que é um UPDATE do PostgreSQL que consome todo o E/S.
Então, hoje, quando isso aconteceu novamente, capturei uma lista de todas as consultas SQL em execução com este comando:
sudo -u postgres psql discourse -o /tmp/RunningQueries -c ‘SELECT datname,pid,state,query FROM pg_stat_activity’
A saída deste comando pode ser encontrada aqui no Pastebin.
Como podem ver, nesses momentos há cerca de 32 consultas UPDATE em execução. Quando isso acontece, o iotop me diz que o banco de dados realiza leituras e gravações de 2,5 MB/s a 15 MB/s.
Se correlacionar a consulta UPDATE em execução com a consulta registrada (em /var/discourse/shared/standalone/log/var-log/postgresql), vejo que essas consultas levam muito, muito tempo:
2018-07-03 12:51:27.052 UTC [17504] discourse@discourse LOG: duration: 2352061.872 ms statement: UPDATE drafts
SET data = '{"reply":"<redacted for debugging purposes>","action":"reply","categoryId":24,"postId":118034,"archetypeId":"regular","whisper":false,"metaData":null,"composerTime":65922,"typingTime":8400}',
corresponde a
discourse | 17504 | active | UPDATE drafts +
| | | SET data = '{"reply":"<redacted for debugging purposes>","action":"reply","categoryId":24,"postId":118034,"archetypeId":"regular","whisper":false,"metaData":null,"composerTime":65922,"typingTime":8400}', +
| | | sequence = 124, +
| | | revisions = revisions + 1 +
| | | WHERE id = 84548
Se reinicio o aplicativo Docker, as consultas retornam, então basicamente só posso esperar que passe, o que deixa meus usuários insatisfeitos.
Por favor, me avisem se há algo que eu possa fazer para melhorar essa situação — por exemplo, mover as tarefas de manutenção para por volta das 5h da manhã.
Se tiverem mais sugestões para que eu possa investigar mais a fundo, por favor, compartilhem! Qualquer ajuda é apreciada ![]()
Edição Ninja: Acabei de lembrar de uma informação adicional: não consegui relacionar isso a jobs cron existentes (nem do sistema operacional host, nem dentro do aplicativo Docker).
Algumas informações de contexto sobre o servidor:
- Sistema operacional do servidor: Ubuntu 18.04LTS
- É uma VM com 100 GB de disco, 4 GB de RAM, 4 núcleos
- Disco é um RAID10 de 6 discos com discos de 15K
- Discourse v2.1.0.beta2 +107
- Plugins: babble, whos-online, voting, cakeday, anonymous-categories, league
- Visualizações de página por dia: Cerca de 75 mil
- Usuários: 1.350, cerca de 700 ativos por dia
- 73,6 mil posts, 351 tópicos, o tópico mais ativo contém 13,5 mil posts
Obrigado por ler até aqui! ![]()


