Tenho um fórum no Discourse, mas com um limite de velocidade de envio lento (20/seg).
É possível definir um limite de velocidade de envio no Discourse?
Estou perguntando isso porque notei que recebo quase 500.000 registros por dia na tabela unsubscribe_keys, mas apenas 9.000 em mail_log e 1.000 em skipped_mail_log. Nosso fórum também tem quase 500.000 membros.
Não tenho certeza se isso é causado pelo envio de e-mails muito rápido, o que pode estar provocando algum problema estranho, então estou tentando reduzir a velocidade de envio, mas sem sucesso.
Não tenho certeza se a taxa de envio é necessária… porque mesmo que consigamos aumentar para provavelmente 60/seg, ainda é possível que o servidor envie muito rápido e seja bloqueado.
Por que tantos membros do Discourse estão recebendo e-mails? Para que exatamente esses e-mails estão sendo enviados? Essa é a pergunta mais relevante.
Em uma instalação típica do Discourse, o único e-mail para “todos os usuários” é o resumo, e mesmo esse é específico apenas para usuários que não acessaram o site há uma semana ou mais, mas também não estão ausentes há mais de um ano.
Em geral, você só recebe e-mails quando alguém está falando diretamente com você, e mesmo assim apenas se você não tiver acessado o site com nenhum navegador na última hora.
Tivemos uma atividade antes (há alguns meses). Essa atividade atraiu cerca de 90 mil membros registrados. Agora, eles podem ficar ausentes por algumas semanas. Por isso, o sistema enviou e-mails de resumo para eles.
Você já encontrou uma solução? Estou prestes a migrar para o Amazon SES e acabei de perceber que nosso limite inicial é de 14 e-mails por segundo. Não tenho certeza de com que rapidez o Discourse enviará esses e-mails ao SES. O site envia muitos e-mails.
Alguém sabe qual é a taxa máxima de envio de e-mails do Discourse? Ele tentará enviar mais de 14 por segundo?
Se ele enviar muito rapidamente, estou me perguntando se seria uma boa ideia criar um script que distribua uniformemente os horários de envio dos resumos para todos os usuários ao longo da semana, em vez de enviar a maioria deles em um único dia (nosso aniversário de importação).
Edição: Percebi que poderia verificar se isso é um problema analisando os logs do Mandrill. A menos que haja algum throttling adicional do Mandrill, acredito que temos um máximo de cerca de 8 e-mails por segundo, então deve estar tudo bem.
Para os resumos, você pode limitar isso a 14 por segundo definindo essa variável global do Discourse para 420, conforme mostrado abaixo no seu arquivo de construção do contêiner:
Isso não é “exatamente” o que você quer, mas está muito perto.
Como 14 por segundo (do seu post) multiplicado por 30 segundos = 420, essa configuração global limitará os resumos a cerca de 420 a cada 30 minutos, exatamente como o código “diz”:
Veja também:
Naturalmente, se seu canal SMTP estiver enviando outros e-mails, você precisará reduzir esse valor; ou pode configurar um canal diferente e separado para e-mails de resumo (como fazemos).
Nota: Essa configuração global é definida como 10.000 a cada 30 minutos por padrão; o que é um monte de resumos por hora, se você me perguntar ;). Por isso, definimos esse valor muito mais baixo para ter uma conta “razoável” da SendGrid a cada mês.
30 resumos a cada 30 minutos = 1.440 por dia, ou cerca de 43.200 por mês (porque estávamos enviando muitos resumos antes de fazer essa mudança há alguns dias). No próximo mês, vou aumentar isso para cerca de 60 resumos a cada 30 minutos, ou cerca de 86.400 resumos por mês, mais ou menos.