aLinks: o novo vilão do consumo de CPU

Era uma bela tarde chuvosa em Porto Alegre, daquelas que convidam a um café com leite e bolo de laranja e uma esticadinha pelos canais de filmes da tevê, quando os tickets de suporte avisando que um servidor estava arriado começaram a chegar. Conseguimos responder o primeiro ticket em 45 segundos, em menos de um minuto havíamos identificado a conta que estava causando problemas, desabilitamo-la, mas isso nem de longe resolveria o problema. No máximo amenizar para os “vizinhos” do site suspenso, mas a situação só estaria resolvida quando todos os envolvidos estivessem satisfeitos.

O que a gente ouve é sempre a mesma coisa: “eu não mexi em nada no site, como é que de uma hora para outra começou a consumir tanto?”

Acontece que o problema começou a acontecer numa outra conta também, e com o cliente no MSN fomos desativando um por um dos plugins, até que o aLinks foi desativado, e o consumo de CPU baixou para os níveis normais do servidor. Pedi, então, ao outro cliente que o desabilitasse também.

Ficamos intrigados com o que poderia estar causando este problema, pois eu próprio uso o aLinks em diversos blogs, e não tenho este tipo de problema.

Analisando o código do plugin, contudo, tive um insight: os dois certamente teriam ativado a opção de gerar links nos comentários. Perguntei, e ambos disseram que sim. Voltamos à configuração de gerar links apenas no post, e os problemas acabaram.

É perfeitamente compreensível que a geração de links nos comentários pese excessivamente em um blog, principalmente se considerarmos que o aLinks usa muitas expressões regulares, que por natureza são pesadas para o PHP processar.

Vejamos um cálculo ilustrativo.

Consideremos “n” como sendo a carga necessária para o aLinks converter os termos de um determinado texto. Consideremos também “c” como sendo a quantidade de comentários de cada post.

Ora, se o aLinks vai ter de ser executado sempre para converter os links para o post, mais uma vez por comentário, temos a seguinte fórmula hipética:

N = (c+1)n

Ou seja, a carga total é o resultado da carga individual multiplicada pela quantidade de comentários mais um.

Veja no gráfico abaixo o aumento de carga de acordo com o aumento de comentários por página. A linha azul indica o aumento de comentários numa página, e a linha vermelha indica a carga na CPU.

Então, agora você já sabe: sem problemas de usar o aLinks, mas muito cuidado com as opções de configuração, ou seu site pode ter de ser suspenso por consumo excessivo de CPU.

Deixe Seu Comentário

Powered by WP Hashcash

Clicky Web Analytics