AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 194557
Accepted
Vaccano
Vaccano
Asked: 2018-01-04 15:13:10 +0800 CST2018-01-04 15:13:10 +0800 CST 2018-01-04 15:13:10 +0800 CST

Tempo limite de consulta quando a duração é inferior a um segundo

  • 772

Estamos recebendo a seguinte exceção em um aplicativo:

Tempo limite de execução expirado. O período de tempo limite decorrido antes da conclusão da operação ou o servidor não está respondendo.

Então, eu olhei para a consulta e com certeza estava demorando muito. Então eu ajustei para levar menos de um segundo.

Mas ainda estou recebendo timeouts.

Então eu configurei uma sessão Extended Events para o evento Attention para pegar os tempos limite e ver o que está acontecendo (usando esta página como um guia).

Os resultados foram confusos. Vejo minhas consultas na lista, mas a duração registrada no rastreamento é inferior a um segundo!

Aqui estão alguns valores de exemplo que estou obtendo na coluna de duração para o tempo limite:

tempo esgotado
539
539
474
423
505
904

Estou confuso. Por que estou recebendo um erro de tempo limite do SQL Server, quando a duração mostra uma média de meio segundo?

NOTA: A saída do evento estendido mostra algumas linhas com mais de 30 segundos. Estes são timeouts legítimos para minha visão e estou trabalhando neles. (Apenas indico isso para mostrar que o evento estendido Attention parece estar funcionando para essas consultas.)

Achei que poderia estar bloqueando, então configurei um evento estendido do Relatório de Processos Bloqueados para ver (seguindo este guia ). Embora haja bloqueios acontecendo no servidor, eles não estão nos bancos de dados em que minha consulta está sendo executada.

O aplicativo está usando uma API chamada Dapper (um Micro ORM bastante popular que ouvi dizer que é usado para executar o Stack Exchange). Imagino que tenha um gerenciamento de conexão decente. Mas mesmo que eles tenham usado mal suas conexões, pelo que entendi, isso leva a vazamentos de recursos, não a tempos limite do SQL.

O tempo limite da consulta no aplicativo é definido como 120 segundos. Isso deve ser bastante tempo para obter a maioria das consultas que estou vendo relatadas como tempos limite.

sql-server sql-server-2012
  • 1 1 respostas
  • 1282 Views

1 respostas

  • Voted
  1. Best Answer
    Vaccano
    2018-01-06T09:45:12+08:002018-01-06T09:45:12+08:00

    Percebi que seja qual for a duração, não é o tempo em que a consulta de tempo limite foi executada. Eu corri waitfor delay '00:00:30'em uma janela de consulta definida para tempo limite em 10 segundos. Os resultados deveriam ter sido de 10 segundos para todos os tempos limite. Mas eu obtive esses valores para meus 6 testes: 70707, 311, 269, 264, 3442, 272. Meu palpite é que a duração é a quantidade de tempo que levou para lidar com o evento Attention (ou seja, parar a consulta).

    Apenas para ter certeza de que a duração não funcionaria corretamente com uma consulta em execução real, executei uma de longa duração, novamente definida para tempo limite em 10 segundos. As durações foram: 64246, 58002, 52828, 68061, 48153, 49084. Demorou mais, mas nenhum desses tempos chega perto de 10 segundos. Mais uma vez, confirma que a duração não é o que parece ser.

    A documentação diz que a duração está em microssegundos (não em milissegundos). Isso também pode funcionar se for a hora de manipular o evento Attention, mas nunca corresponderia ao tempo que levou para a execução da consulta expirada.

    Executei a consulta de longa duração sem tempo limite e tive que pará-la após 120 segundos. Demorou muito mais para parar e a duração do evento Attention foi 6400055. 6,4 segundos é aproximadamente quanto tempo levou para parar. Novamente confirmando que a duração é a quantidade de tempo que leva para lidar com o evento "Atenção".

    • 1

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve