As instâncias do Mastodon atualizam periodicamente a conexão com outros servidores para manter a timeline federada atualizada. Esse processo de atualização em segundo plano busca novas postagens, impulsionamentos e respostas de instâncias remotas que seus usuários seguem ou com as quais interagem. Sem um agendamento configurado corretamente, sua instância pode exibir conteúdo desatualizado ou perder atualizações do Fediverso mais amplo. Este artigo explica como o Mastodon lida com as atualizações de federação em segundo plano e como você pode ajustar o agendamento para atender às necessidades de desempenho e frescor do conteúdo do seu servidor.
Principais Conclusões: Agendamento da Atualização em Segundo Plano da Federação no Mastodon
- Tarefa agendada do Sidekiq
Scheduler::FollowRecommendationsScheduler: Controla com que frequência a instância busca novo conteúdo de contas remotas seguidas. - Variável de ambiente
FETCH_REMOTE_STATUSES: Ativa ou desativa a busca em segundo plano de status remotos por completo. - Configuração de cron job ou agendamento do Sidekiq: Permite definir o intervalo exato entre os ciclos de atualização, medido em minutos ou horas.
Como o Mastodon Lida com a Atualização em Segundo Plano da Federação
O Mastodon não consulta continuamente todas as instâncias remotas em tempo real. Em vez disso, ele usa um sistema de tarefas em segundo plano chamado Sidekiq para buscar periodicamente atualizações de servidores remotos com os quais sua instância interagiu. O agendador principal é o Scheduler::FollowRecommendationsScheduler, que é executado em um intervalo configurável e enfileira tarefas para buscar status das contas remotas que seus usuários locais seguem.
O processo de atualização funciona assim:
- Quando um usuário local segue uma conta em outra instância, o Mastodon se inscreve no feed público dessa conta remota através do protocolo ActivityPub.
- O agendador em segundo plano verifica periodicamente cada conta remota inscrita em busca de novas postagens.
- Novas postagens são puxadas para o banco de dados da sua instância e aparecem na timeline federada e nos feeds iniciais dos seguidores locais.
O intervalo de atualização padrão depende da sua configuração do Sidekiq. Por padrão, o Mastodon executa o agendador de recomendações de seguidores a cada 2 horas. Isso significa que o conteúdo de instâncias remotas pode ter até 2 horas de atraso quando aparecer na sua instância. Para instâncias de alto tráfego ou comunidades que precisam de atualizações quase em tempo real, esse padrão pode ser muito lento.
O agendamento de atualização é controlado por dois componentes principais:
Configuração do Agendador do Sidekiq
O Mastodon usa a gem sidekiq-scheduler para definir tarefas periódicas. Cada tarefa agendada tem uma expressão cron que determina com que frequência ela é executada. O agendador relevante para a atualização da federação está definido em config/sidekiq.yml na seção scheduler:.
Variável de Ambiente FETCH_REMOTE_STATUSES
Essa variável de ambiente atua como um interruptor mestre. Defina-a como true para ativar a busca em segundo plano de status remotos. Defina-a como false para desativar o recurso por completo. Desativá-la significa que sua instância receberá apenas conteúdo remoto que é enviado a ela em tempo real via ActivityPub, o que pode reduzir a carga do servidor, mas também reduzir o frescor do conteúdo.
Passos para Agendar ou Ajustar a Atualização em Segundo Plano da Federação
Siga estes passos para alterar o agendamento de atualização na sua instância do Mastodon. Você precisa de acesso ao shell do seu servidor e capacidade de editar arquivos de configuração. Todas as alterações exigem uma reinicialização do serviço Sidekiq.
- Localize o arquivo de configuração do Sidekiq
Abra/home/mastodon/live/config/sidekiq.ymlno seu servidor. Se você instalou o Mastodon usando um caminho diferente, ajuste conforme necessário. - Encontre a seção do agendador
Procure pela chavescheduler:no arquivo YAML. Dentro dela, encontre a entrada paraScheduler::FollowRecommendationsScheduler. Ela se parece com isto:scheduler:
Scheduler::FollowRecommendationsScheduler:
cron: '0 /2 '
O valorcrondefine o intervalo de atualização. O exemplo acima significa a cada 2 horas no minuto 0. - Edite a expressão cron
Altere a expressão cron para o intervalo desejado. Por exemplo, para atualizar a cada 30 minutos, use'/30 '. Para atualizar a cada hora, use'0 '. Salve o arquivo após editar. - Defina a variável de ambiente FETCH_REMOTE_STATUSES
Abra o arquivo de ambiente do Mastodon, normalmente/etc/systemd/system/mastodon-sidekiq.serviceou~/.env.production. Adicione ou edite a linha:FETCH_REMOTE_STATUSES=true
Se essa variável estiver ausente ou definida comofalse, a atualização em segundo plano não será executada independentemente do agendamento cron. - Reinicie o serviço Sidekiq
Execute o seguinte comando para aplicar as alterações:sudo systemctl restart mastodon-sidekiq
Se você usa um sistema de init diferente, ajuste o comando conforme necessário. - Verifique o novo agendamento
Confira os logs do Sidekiq para confirmar que o agendador está sendo executado no novo intervalo. Use:sudo journalctl -u mastodon-sidekiq -f
Procure por linhas contendoFollowRecommendationsSchedulerseguidas por um timestamp. O tempo entre essas entradas de log deve corresponder ao seu novo intervalo cron.
Erros Comuns e Considerações de Desempenho
Definir o intervalo cron muito curto
Um intervalo de atualização muito curto, como a cada 5 minutos, pode causar carga excessiva na sua instância e nos servidores remotos. Cada ciclo de atualização enfileira muitas requisições HTTP para buscar status. Se sua instância segue milhares de contas remotas, um intervalo curto pode sobrecarregar a rede e a CPU do seu servidor. O intervalo mínimo recomendado é de 30 minutos para instâncias pequenas e 1 hora para instâncias maiores.
Esquecer de definir FETCH_REMOTE_STATUSES como true
Mesmo com um agendamento cron correto, a atualização em segundo plano não será executada se FETCH_REMOTE_STATUSES não estiver explicitamente definido como true. Muitos administradores assumem que o padrão está ativado, mas o Mastodon vem com essa variável não definida, o que significa que a busca em segundo plano está desligada. Sempre verifique essa variável após alterar o agendamento.
Não reiniciar o Sidekiq após alterações de configuração
Editar sidekiq.yml ou o arquivo de ambiente não surte efeito até que o processo Sidekiq seja reiniciado. Alguns administradores editam os arquivos e esperam que as alterações sejam aplicadas imediatamente. Sempre execute o comando de reinicialização para carregar a nova configuração.
Ignorar o congestionamento da fila do Sidekiq
Se suas filas do Sidekiq já estiverem congestionadas com outras tarefas, adicionar tarefas de atualização de federação mais frequentes pode piorar o desempenho. Monitore o painel do Sidekiq em /sidekiq na sua instância do Mastodon. Se a fila default tiver regularmente mais de 100 tarefas pendentes, considere um intervalo de atualização maior ou aumentar o número de workers do Sidekiq.
| Item | Agendamento Padrão | Recomendado para Instâncias Pequenas |
|---|---|---|
| Intervalo de atualização | A cada 2 horas | A cada 30 a 60 minutos |
| FETCH_REMOTE_STATUSES | Não definido (desativado) | Definido como true |
| Número de workers do Sidekiq | 1-2 (depende da instalação) | Pelo menos 2 para tarefas de atualização |
Agora você pode controlar exatamente com que frequência sua instância do Mastodon atualiza o conteúdo de servidores remotos. Comece definindo um intervalo de 60 minutos e monitore a carga do servidor por alguns dias. Se o desempenho for aceitável, você pode reduzir o intervalo para 30 minutos para obter conteúdo mais fresco. Lembre-se de sempre reiniciar o Sidekiq após qualquer alteração de configuração e verificar o novo agendamento nos logs.