Comportamento de Atualização em Segundo Plano da Federação no Mastodon: Como Agendar
🔍 WiseChecker

Comportamento de Atualização em Segundo Plano da Federação no Mastodon: Como Agendar

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.

ADVERTISEMENT

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.

  1. Localize o arquivo de configuração do Sidekiq
    Abra /home/mastodon/live/config/sidekiq.yml no seu servidor. Se você instalou o Mastodon usando um caminho diferente, ajuste conforme necessário.
  2. Encontre a seção do agendador
    Procure pela chave scheduler: no arquivo YAML. Dentro dela, encontre a entrada para Scheduler::FollowRecommendationsScheduler. Ela se parece com isto:
    scheduler:
    Scheduler::FollowRecommendationsScheduler:
    cron: '0 /2 '

    O valor cron define o intervalo de atualização. O exemplo acima significa a cada 2 horas no minuto 0.
  3. 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.
  4. Defina a variável de ambiente FETCH_REMOTE_STATUSES
    Abra o arquivo de ambiente do Mastodon, normalmente /etc/systemd/system/mastodon-sidekiq.service ou ~/.env.production. Adicione ou edite a linha:
    FETCH_REMOTE_STATUSES=true
    Se essa variável estiver ausente ou definida como false, a atualização em segundo plano não será executada independentemente do agendamento cron.
  5. 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.
  6. 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 contendo FollowRecommendationsScheduler seguidas por um timestamp. O tempo entre essas entradas de log deve corresponder ao seu novo intervalo cron.

ADVERTISEMENT

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.

ADVERTISEMENT