🎉 USE O CUPOM DESCONTO-FULL | 10% OFF acima de R$ 100,00

Como corrigir Deadlock found when trying to get lock

Time Full Services Time Full Services
Tipo Banco de dados
Nome do erro Deadlock found when trying to get lock EN: Deadlock found when trying to get lock
Severidade Atenção
Descrição O erro Deadlock no MySQL do WordPress ocorre quando duas transações ficam presas esperando uma pela liberação do lock que a outra segura, e o InnoDB aborta uma delas para destravar. No WordPress costuma vir de plugins que gravam no banco em paralelo, de cron pesado ou de picos de escrita simultânea na mesma tabela.

O que é o erro Deadlock no MySQL do WordPress?

Deadlock found when trying to get lock é o erro que o MySQL devolve quando duas ou mais transações se bloqueiam mutuamente: cada uma segura um lock que a outra precisa, e nenhuma avança. Para não travar o banco, o InnoDB detecta o impasse e desfaz uma das transações com esse erro. No WordPress, isso aparece quando vários processos escrevem ao mesmo tempo na mesma tabela, por exemplo plugins de cache, de estatísticas ou o WooCommerce processando pedidos em paralelo. Não é corrupção: é contenção de escrita, e a operação abortada normalmente pode ser repetida.

Como identificar

  • O log de erros do PHP ou do MySQL mostra “Deadlock found when trying to get lock; try restarting transaction”.
  • Uma ação no painel falha de forma intermitente e funciona ao ser repetida segundos depois.
  • O erro surge em horários de pico de tráfego ou quando o cron do WordPress roda tarefas pesadas.
  • Plugins de estatística, fila ou WooCommerce registram falhas de gravação esporádicas no banco.

Como prevenir

  • Use um cron real do servidor com execução espaçada em vez do WP-Cron em sites movimentados
  • Mantenha plugins de cache, fila e estatística atualizados para evitar bugs de concorrência
  • Evite transações longas e operações de escrita em massa nos horários de pico de tráfego

Causa

  • Duas transações gravando na mesma tabela em ordem inversa de locks, travando uma à outra.
  • Plugins de cache, fila ou estatística escrevendo em paralelo na wp_options ou em tabelas próprias.
  • Cron do WordPress disparando tarefas pesadas de escrita ao mesmo tempo que requisições de usuário.
  • WooCommerce processando muitos pedidos simultâneos que disputam locks nas tabelas de pedidos.
  • Transações longas que seguram locks por tempo demais durante picos de escrita concorrente.

Como resolver

  1. Entenda que o deadlock é recuperável: o InnoDB aborta apenas uma das transações para destravar; a outra conclui normalmente. Muitas vezes basta repetir a operação que falhou, pois o impasse momentâneo já se desfez.
  2. Identifique o plugin ou processo envolvido: veja no log de erros o horário e a tabela citada no deadlock. Cruze com plugins de cache, estatística ou fila ativos. Desative temporariamente o suspeito e observe se os deadlocks param.
  3. Reduza a concorrência do cron: se o cron do WordPress dispara tarefas pesadas em paralelo, troque o WP-Cron por um cron real do servidor com execução espaçada, para as escritas não competirem pelos mesmos locks ao mesmo tempo.
  4. Atualize os plugins envolvidos: deadlocks recorrentes ligados a um plugin específico costumam ser bugs de concorrência já corrigidos. Atualize o plugin à última versão e verifique o changelog por correções de gravação no banco.
  5. Acompanhe a frequência depois do ajuste: deadlocks raros e isolados são normais em bancos transacionais. Só preocupe-se se forem frequentes; nesse caso, leve o trecho do InnoDB status ao suporte da hospedagem para análise mais fina.
SQL
-- Veja os detalhes do ultimo deadlock detectado pelo InnoDB
SHOW ENGINE INNODB STATUS;
-- Procure a secao 'LATEST DETECTED DEADLOCK' na saida: ela mostra as duas
-- transacoes, as queries e as tabelas que se bloquearam.

-- Liste transacoes ativas e ha quanto tempo seguram locks (MySQL 8)
SELECT trx_id, trx_state, trx_started, trx_mysql_thread_id, trx_query
FROM information_schema.innodb_trx
ORDER BY trx_started;

Perguntas frequentes

O que significa Deadlock found when trying to get lock?
Significa que duas transações se bloquearam mutuamente, cada uma segurando um lock que a outra precisava. O InnoDB detectou o impasse e abortou uma delas para destravar o banco. A operação abortada geralmente pode ser repetida com sucesso.
Deadlock no MySQL corrompe meu banco de dados?
Não. Deadlock é contenção de escrita, não corrupção. O InnoDB desfaz uma das transações de forma limpa e a outra conclui normalmente. O dado fica consistente; o que você perde é apenas a transação abortada, que pode ser refeita.
Por que o deadlock acontece só nos horários de pico?
Porque o pico aumenta as escritas simultâneas na mesma tabela. Quanto mais transações concorrendo pelos mesmos locks ao mesmo tempo, maior a chance de duas se travarem. Reduzir a concorrência do cron e de plugins costuma diminuir a frequência.
Como descubro qual plugin causa os deadlocks?
Rode SHOW ENGINE INNODB STATUS e leia a seção LATEST DETECTED DEADLOCK, que mostra as queries e tabelas envolvidas. Cruze a tabela citada e o horário do log com os plugins ativos de cache, fila ou estatística para achar o responsável.
Preciso me preocupar com deadlocks raros?
Não. Em bancos transacionais como o InnoDB, deadlocks isolados são esperados e a aplicação simplesmente repete a operação. A preocupação só faz sentido quando são frequentes a ponto de fazer ações do site falharem de forma perceptível.
Trocar o WP-Cron por cron do servidor ajuda contra deadlocks?
Sim. O WP-Cron pode disparar tarefas pesadas junto com requisições de usuário, somando escritas concorrentes. Um cron real do servidor, com execução espaçada, separa esses processos no tempo e reduz a disputa pelos mesmos locks.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes