Suporte » Desenvolvendo com WordPress » Erro ao estabelecer uma conexão com o Banco de Dados

  • Olá amigos,

    Gostaria de uma ajuda quanto a erros de conexão do WordPress com o banco de dados.

    Tenho um cliente com um site em WordPress que recebe em média 500 visitas por dia, nos últimos meses estamos enfrentando muito erros de conexão com o banco de dados, mas não existe falha de configuração, pois o erro é intermitente e também não houve alteração no código que pudesse causar a falha.

    Após muito questionar obtive a seguinte resposta do serviço de hospedagem (UOL Host), como não tenho muita familiaridade com banco de dados gostaria de um auxilio para que pudesse investigar melhor o caso.

    Após analise identificamos que seu banco de dados esta executando query’s ineficientes e por estar em um servidor compartilhado eventualmente o consumo oscila fazendo com que ocorra time-out e gerando percepção de falha.
    Pedimos que verifique suas query´s.

    Query_time: 60.012760 Lock_time: 0.000100 Rows_sent: 10 Rows_examined: 22226

    SET timestamp=1412641071;
    SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND (((wp_posts.post_title LIKE ‘%buzios%’) OR (wp_posts.post_content LIKE ‘%buzios%’))) AND (wp_posts.post_password = ”) AND wp_posts.post_type IN (‘post’, ‘page’, ‘attachment’, ‘diario-de-bordo’, ‘ims_gallery’) AND (wp_posts.post_status = ‘publish’) OR ( ID IN ( SELECT DISTINCT post_parent FROM wp_posts WHERE 1=1 AND ((wp_posts.post_title LIKE ‘%buzios%’) OR (wp_posts.post_content LIKE ‘%buzios%’)
    OR (wp_posts.post_excerpt LIKE ‘%buzios%’) OR (wp_posts.post_excerpt LIKE ‘%buzios%’)) AND wp_posts.post_status = ‘publish’)) ORDER BY wp_posts.post_date DESC LIMIT 30, 10;
    Time: 141006 21:17:55

    Tenho minhas dúvidas quanto ao problema ser no site, pois não foram feitas grandes alterações no código. Poderia ser algum plugin que esteja interferindo, mesmo não tendo ocorrido nenhuma alteração antes das falhas?

    Não consigo nem conexão através do phpMyAdmin quando o erro ocorre, o que poderia apontar uma falha na base e não necessariamente do meu site certo?

Visualizando 1 resposta (de um total de 1)
  • Criador do tópico chodos

    (@chodos)

    Completando a minha postagem, ontem consegui ter um contato mais eficiente com o suporte da hospedagem.

    Fui informado que o número limite de conexões com o banco havia sido reduzido, por as querys do sistema estarem degradando o desempenho do servidor. Foram passadas algumas querys de exemplo, gostaria se possível a ajuda de vocês para esclarecer o caso.

    A primeira é:

    # Query_time: 10.657546 Lock_time: 0.000036 Rows_sent: 6 Rows_examined: 372
    SET timestamp=1412492578;
    SELECT * FROM wp_comments WHERE comment_approved = ‘1’ AND comment_post_ID = 16018 ORDER BY comment_date_gmt ASC;

    Acredito que seja a listagem de comentários de um post, não vejo um modo de otimizar uma query desse tipo, uma consulta simples que aponta para um único post.

    A segunda é:

    # Query_time: 10.714655 Lock_time: 0.000107 Rows_sent: 10 Rows_examined: 22721
    SET timestamp=1412492927;
    SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND (((wp_posts.post_title LIKE ‘%uc%’) OR (wp_posts.post_content LIKE ‘%uc%’))) AND (wp_posts.post_password = ”) AND wp_posts.post_type IN (‘post’, ‘page’, ‘attachment’, ‘diario-de-bordo’, ‘ims_gallery’) AND (wp_posts.post_status = ‘publish’) OR ( ID IN ( SELECT DISTINCT post_parent FROM wp_posts WHERE 1=1 AND ((wp_posts.post_title LIKE ‘%uc%’) OR (wp_posts.post_content LIKE ‘%uc%’)
    OR (wp_posts.post_excerpt LIKE ‘%uc%’) OR (wp_posts.post_excerpt LIKE ‘%uc%’)) AND wp_posts.post_status = ‘publish’)) ORDER BY wp_posts.post_title ASC LIMIT 590, 10;

    Essa acredito que seja uma pesquisa utilizando a função de search, realmente houve uma intervenção minha nessa função, que já foi removida, inclui que fosse selecionados todos os post_types, ou seja a pesquisa fosse feita em todos os tipos de post e não somente ‘post’. Isso poderia ser uma das causas de lentidão?

    A última é:

    # Query_time: 12.615765 Lock_time: 0.000185 Rows_sent: 6 Rows_examined: 1841
    SET timestamp=1412493321;
    SELECT p.ID AS ‘id’, p.post_title AS ‘title’, p.post_date AS ‘date’, p.post_author AS ‘uid’ , p.comment_count AS ‘comment_count’ , v.pageviews AS ‘pageviews’ FROM wp_popularpostsdata v LEFT JOIN wp_posts p ON v.postid = p.ID WHERE p.post_type = ‘post’ AND p.ID IN (SELECT object_id FROM wp_term_relationships AS r JOIN wp_term_taxonomy AS x ON x.term_taxonomy_id = r.term_taxonomy_id JOIN wp_terms AS t ON t.term_id = x.term_id WHERE x.taxonomy = ‘category’ AND t.term_id IN(89)) AND p.post_password = ” AND p.post_status = ‘publish’ ORDER BY pageviews DESC LIMIT 6;

    Essa na verdade acredito que seja de um plugin, que exibe os posts mais acessados. Também não vejo um modo de otimizar isso na query.

    O que me incomoda também é que jogando essa query no phpMyAdmin elas executam em um tempo muito inferior ao que eles passaram, deveria haver alguma diferença? Alguma sugestão do que fazer? Qualquer ajuda é válida. Obrigado!

Visualizando 1 resposta (de um total de 1)
  • O tópico ‘Erro ao estabelecer uma conexão com o Banco de Dados’ está fechado para novas respostas.