Aug 18 2008

aLinks: o novo vilão do consumo de CPU

Arquivado em: Ferramentas

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.


Textos relacionados a este:

Trackback URI | Comments RSS

Leave a Reply

É proibida a reprodução do conteúdo deste site sem prévia autorização por escrito do autor. Citações de no máximo um parágrafo acompanhadas do link para o texto original são permitidas sem necessidade de autorização escrita.