Solucionando alto uso no admin-ajax.php com Heartbeat Control

Sem Comentários

Introduzido no WordPress 3.6 a API do WordPress Heartbeat permite que o WordPress se comunique entre navegador e o servidor. Ela permite uma melhor gestão da sessão do usuário, controle de revisão e de auto salvamento. (rascunhos de posts, etc)

A API do WordPress funciona em /wp-admin/admin-ajax.php e executa requisições em AJAX em seu navegador. Que em teoria é incrível a forma como o WordPress acompanha o que está acontecendo no painel.

No entanto, este também pode começar a enviar pedidos excessivos para o admin-ajax.php o que pode levar a alta utilização da CPU e a lentidão de seu site/servidor. Sempre que um navegador é deixado em aberto em uma página usando o API o mesmo gera muitos problemas e lentidões devido o grande número de requisições.

WordPress Heartbeat API em ação

Vamos colocar neste exemplo que tenha apenas feito o login em seu painel de administração, e que em seguida tenha minimizado a sua janela e começou a fazer outra coisa em seu navegador e tenha deixado lá parado a tela em aberto, o que ocorre é que o admin-ajax.php irá continuar a fazer as requisições e podemos ver isso nos logs;

Às [00:29:30] você entrou no painel do administrador, e você poderá ver a requisição inicial GET /wp-admin/index.php.

Depois das [00:30:31] o WordPress Heartbeat API envia um pedido POST /wp-admin/admin-ajax.php

Com o painel do WordPress em foco, um pedido do Heartbeat deve ser espaçados em no máximo 60 segundos. Se o painel estiver fora de foco, a pulsação do Heartbeat pede espaço de 120 segundos.

e458

Agora, cada uma dessas requisições POST tem uma execução de script PHP correspondente no servidor usando um tempo de CPU:

f8ef471

Com o nosso painel aberto em cerca de meia hora, gerou 25 execuções de script PHP. Com um uso total de 5,77 de CPU. Nada terrível, mas também não é ótimo, já que usamos a CPU essencialmente para a verificação de nada.

Desabilitando o WordPress Heartbeat API

Se você perceber que está tendo uma quantidade excessiva de pedidos no admin-ajax.php, a API do WordPress pode ser desativada para evitar este tipo de atividade aconteça automaticamente.

 

Rayonni Teixeira - Gerente de Contas & Suporte Sênior III

Arquivos

 

Deixe uma resposta

Vamos ler mais?

Ver mais artigos