Ambiente: Discourse auto-hospedado na AWS EC2, com a AMI Ubuntu 24.04. O host é um r7g.large com 2x vCPUs e 16GB de RAM. O Discourse está na versão 3.6.0.beta1-dev (db974047e4) e é atualizado regularmente. O WordPress está na versão 6.8.2, e o plugin wp-discourse está na versão 2.5.9. Tanto o Wordpress quanto o Discourse são proxied (“nuvem laranja”) atrás do Cloudflare.
Configurações atuais do wp-discourse: Estou exibindo comentários do Discourse para todos os tópicos e tenho a opção “Carregar comentários com Ajax” marcada. (Tanto os leitores quanto os proprietários do site Wordpress desejam que novos comentários sejam exibidos o mais rápido possível abaixo das postagens do WP, portanto, de acordo com os requisitos dos proprietários, prefiro manter o “Carregar comentários com Ajax” ativado.)
O que estou vendo: Geralmente, o wp-discourse está funcionando muito bem. Quando um leitor visita uma postagem do WP, o navegador dele solicita /wp-json/wp-discourse/v1/discourse-comments?post_id=XXXXX, onde XXXXX é o ID da postagem esperado, e os comentários são carregados sem problemas. Novos comentários aparecem no lado do WordPress poucos segundos após serem postados no Discourse.
No entanto, os navegadores dos visitantes também estão emitindo uma chamada para o mesmo URI discourse-comments quando visitam qualquer endereço do wordpress em todo o site. A página inicial do site, arquivos de comentários, a página sobre, a página de contato, páginas de biografia de autor, páginas estáticas, páginas de pesquisa, tudo. Essas solicitações são todas para /wp-json/wp-discourse/v1/discourse-comments?post_id=undefined, e estou recebendo cerca de 20.000 delas em um período de 24 horas (correspondendo aproximadamente ao meu número total de páginas servidas).
Eu não me importaria muito, exceto que atender a tantas solicitações adicionais está criando uma carga perceptível no meu servidor de origem do WP. É gerenciável agora, mas este site é um site de previsão do tempo da costa do Golfo e durante eventos climáticos (especialmente furacões) nossa contagem diária de visualizações pode aumentar de seus normais ~20k para entre 1,5-2 milhões, e lidar com milhões de solicitações de post_id=undefined em um dia seria desafiador.
A única coisa que encontrei aqui no meta que parece ter algo a ver com esse problema é este tópico de 2019, onde a resposta dada é “desligar o carregamento de comentários com ajax”. Como observado acima, dadas as exigências sob as quais estou operando, prefiro não fazer isso.
Aqui está uma solicitação representativa de undefined. Esta foi gerada quando acessei a página inicial do site:
Solução alternativa: Como essas solicitações não parecem estar fazendo nada, implementei uma regra WAF do Cloudflare para respondê-las no nível do CF com um corpo de resposta vazio. Isso eliminou completamente os efeitos do comportamento problemático — não vejo mais as solicitações de undefined na minha origem e não estou desperdiçando CPU gerando respostas.
Pergunta: O envio de solicitações ajax de discourse-comments?post_id=undefined para cada página do WP é o comportamento pretendido do plugin wp-discourse? Parece que poderia ser um pouco mais seguro (ou pelo menos um pouco mais determinístico) enviar essas solicitações apenas quando realmente estiver carregando uma postagem do WP (ou uma página também, se as páginas estiverem habilitadas nas opções do wp-discourse).
Como eu disse, tenho uma solução alternativa implementada que parece estar funcionando e removendo a carga extra de lidar com dezenas de milhares de solicitações espúrias, então estou estável e em uma boa situação. Mas seria bom saber se o comportamento que estou vendo é por design.


