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 / 71965
Accepted
Tom
Tom
Asked: 2014-07-22 03:40:39 +0800 CST2014-07-22 03:40:39 +0800 CST 2014-07-22 03:40:39 +0800 CST

Coletando estatísticas de espera

  • 772

Atualmente, usamos uma ferramenta de monitoramento que nos mostra nossas principais estatísticas de espera por número de tarefas em espera ou tempo total de espera. Abaixo estão as estatísticas de espera por número de tarefas em espera e também o tempo de espera por tarefa.

Temos usuários reclamando de lentidão no sistema, mas as métricas do servidor parecem boas em termos de E/S de disco, memória e CPU. Alguém sabe se as esperas PREEMPTIVE são um problema?

Number of waiting tasks
SOS_SCHEDULER_YIELD
PAGELATCH_EX
PAGELATCH_SH
PREEMPTIVE_XE_CALLBACKEXECUTE
PREEMPTIVE_XE_GETTARGETSTATE
PREEMPTIVE_XE_SESSIONCOMMIT

Average wait per task
PAGEIOLATCH_SH
PREEMPTIVE_XE_GETTARGETSTATE 

Atualização:
executei uma consulta de Paul Randal semelhante à que você postou e obtive o seguinte:

WaitType    Wait_S  Resource_S  Signal_S    WaitCount   Percentage  AvgWait_S   AvgRes_S    AvgSig_S
PREEMPTIVE_XE_GETTARGETSTATE    9704.81 9704.81 0.00    604647  44.60   0.0161  0.0161  0.0000

Eu sei que isso não combina muito bem, mas basicamente esse tipo de espera foi responsável por 44,60% de todos os tipos de espera. Além disso, como não houve esperas de sinal neste tipo, isso indica que não há pressão da CPU, mas sim uma espera em algum outro recurso. No entanto, não tenho certeza de como deduzo o que é esse recurso.

Também este é o SQL 2012 SP1

Update2 AS solicitado aqui são os resultados de sua consulta. Em relação aos eventos estendidos, as únicas sessões em execução são o padrão system_health e 2 do SharePoint que acabei de notar, eles devem ter sido colocados lá por padrão. Posso desligá-los. Será que eles estão causando algum problema?

É interessante que meu PREEMPTIVE_XE_GETTARGETSTATE não pareça estar nesta lista.

wait_type   wait_time_ms    signal_wait_time_ms resource_wait_time_ms   percent_total_waits percent_total_signal_waits  percent_total_resource_waits
SP_SERVER_DIAGNOSTICS_SLEEP 300014  355508314   0   24.621089361251698  99.883069863550302  0.000000000000000
MSQL_XP 96782   0   4268999 0.295653861591811   0.000000000000000   0.295653861591811
ASYNC_IO_COMPLETION 56193   64  345552  0.023935987107964   0.000017981341700   0.023931554722962
BACKUPTHREAD    41100   6850    265025  0.018828979257262   0.001924565478840   0.018354575549998
LCK_M_U 40500   71  41030   0.002846491499596   0.000019948050948   0.002841574322484
PWAIT_ALL_COMPONENTS_INITIALIZED    31422   0   94205   0.006524262955146   0.000000000000000   0.006524262955146
XE_LIVE_TARGET_TVF  28050   0   33458   0.002317167771915   0.000000000000000   0.002317167771915
LCK_M_X 4027    50  29195   0.002025392177944   0.000014047923203   0.002021929377161
SQLTRACE_INCREMENTAL_FLUSH_SLEEP    4018    613 355390660   24.612983567922965  0.000172227538471   24.612941113985366
CXPACKET    3756    1   14755   0.001021941767062   0.000000280958464   0.001021872511047
sql-server sql-server-2012
  • 3 3 respostas
  • 3153 Views

3 respostas

  • Voted
  1. user507
    2014-07-22T07:45:45+08:002014-07-22T07:45:45+08:00

    Os preemptive_xe_*tipos de espera estão associados a eventos estendidos pelo que entendi e posso encontrar. Considerando isso e sua primeira frase:

    Atualmente, usamos uma ferramenta de monitoramento que nos mostra nossas principais estatísticas de espera por número de tarefas em espera ou tempo total de espera.

    Eu começaria a olhar para suas ferramentas de monitoramento como o culpado. No entanto, como seus dados do script de Paul mostram que a média de espera é baixa, eu não me preocuparia muito com isso agora.

    Seu principal desafio aqui, que eu acho que você pode estar ignorando, é que seu usuário disse que houve uma lentidão no sistema/aplicativo. A maioria sempre apontará para o banco de dados/servidor como o culpado. Minha próxima pergunta geral quando alguém me diz que é "qual parte do sistema é lenta". Se eles me disserem coisas como páginas carregando lentamente e não estiverem realmente executando nenhum relatório ou consulta ad hoc, peço que verifiquem com o pessoal do servidor ou administradores de aplicativos para garantir que nada mais esteja errado. Então, enquanto eles estiverem fazendo isso, irei verificar o desempenho do servidor de banco de dados. No entanto, como você mostrou, se o tipo de espera XE for o único acima de 10%, não acho que o problema esteja no servidor de banco de dados.

    Se você deseja encontrar o culpado desse tipo de espera, pode começar a consultar sys.dm_os_waitting_tasks, isso mostrará a session_idespera que está ocorrendo. Você também pode usar sp_WhoIsActive para obter informações semelhantes com um pouco mais de facilidade. Aposto que você descobrirá que são sessões associadas à sua ferramenta de monitoramento.

    • 5
  2. Mark Sinkinson
    2014-07-22T04:29:03+08:002014-07-22T04:29:03+08:00

    PreEmptive_XXXtipos de espera são aqueles que são:

    Usado para indicar que um trabalhador está executando um código que não está nos sistemas de agendamento do SQLOS

    Então, essencialmente, o SQL Server está aguardando a conclusão dos processos externos antes de poder continuar com seu próprio processamento.

    Pode ser causado pelo uso de CLR ou procedimentos armazenados estendidos; portanto, se você tiver algum deles, começarei procurando lá.

    • 1
  3. Best Answer
    Shanky
    2014-07-22T05:09:02+08:002014-07-22T05:09:02+08:00

    O SQL Server funciona no modo não preemtivo, o que significa que, se o SQLOS solicitar que ele ceda porque recebeu uma solicitação do sistema operacional Windows, ele solicitará que o SQL server ceda e o SQL Server o ouvirá e cederá ou fará o que o SQLOS solicitou . Isso ocorre porque o SQL Server é executado como um aplicativo e recebe recursos alocados pelo SQLOS, que é monitorado pelo Windows O. Os tipos de espera preemptiva ocorrem quando o SQL Server está executando uma tarefa e é interrompido pelo sistema operacional e solicitado a desistir do thread que está usando para que possa ser alocado para outras tarefas e o SQL fará isso. Ele renderá e aguardará até que o encadeamento esteja disponível. Essa espera ocorrerá em esperas PREEMTIVE-XXX.

    Qual é a versão do SQL Server aqui está corrigida para o Service Pack mais recente, houve um bug no SQL Server 2008 que aponta o valor incorreto dos tipos de espera preventiva.

    Você pode executar sys.dm_exec_requests DMV e ver se o processo que obtém tipos de espera preemtivos está suspenso ou em execução.

    Você pode postar a saída da consulta abaixo (por Jonathan Kehayias) para capturar as estatísticas de espera

    SELECT TOP 10
    wait_type ,
    max_wait_time_ms wait_time_ms ,
    signal_wait_time_ms ,
    wait_time_ms - signal_wait_time_ms AS resource_wait_time_ms ,
    100.0 * wait_time_ms / SUM(wait_time_ms) OVER ( )
    AS percent_total_waits ,
    100.0 * signal_wait_time_ms / SUM(signal_wait_time_ms) OVER ( )
    AS percent_total_signal_waits ,
    100.0 * ( wait_time_ms - signal_wait_time_ms )
    / SUM(wait_time_ms) OVER ( ) AS percent_total_resource_waits
    FROM sys.dm_os_wait_stats
    WHERE wait_time_ms > 0 -- remove zero wait_time
    AND wait_type NOT IN -- filter out additional irrelevant waits
    ( 'SLEEP_TASK', 'BROKER_TASK_STOP', 'BROKER_TO_FLUSH',
    'SQLTRACE_BUFFER_FLUSH','CLR_AUTO_EVENT', 'CLR_MANUAL_EVENT',
    'LAZYWRITER_SLEEP', 'SLEEP_SYSTEMTASK', 'SLEEP_BPOOL_FLUSH',
    'BROKER_EVENTHANDLER', 'XE_DISPATCHER_WAIT', 'FT_IFTSHC_MUTEX',
    'CHECKPOINT_QUEUE', 'FT_IFTS_SCHEDULER_IDLE_WAIT',
    'BROKER_TRANSMITTER', 'FT_IFTSHC_MUTEX', 'KSOURCE_WAKEUP',
    'LOGMGR_QUEUE', 'ONDEMAND_TASK_QUEUE',
    'REQUEST_FOR_DEADLOCK_SEARCH', 'XE_TIMER_EVENT', 'BAD_PAGE_PROCESS',
    'DBMIRROR_EVENTS_QUEUE', 'BROKER_RECEIVE_WAITFOR',
    'PREEMPTIVE_OS_GETPROCADDRESS', 'PREEMPTIVE_OS_AUTHENTICATIONOPS',
    'WAITFOR', 'DISPATCHER_QUEUE_SEMAPHORE', 'XE_DISPATCHER_JOIN',
    'RESOURCE_QUEUE' )
    ORDER BY wait_time_ms DES
    

    Quais outros processos estão sendo executados no sistema? O sistema operacional está sob carga? Quantos núcleos de CPU o sistema possui?

    EDIT: Depois que o usuário colou a saída

    A saída não dá e imagem concreta use minha consulta. Além disso, você está executando rastreamentos de eventos estendidos porque posso ver os tipos de espera XE. Considero esse tipo de espera prejudicial e parece que você não está enfrentando um problema. As ferramentas de monitoramento às vezes exageram , então, com o resultado que você postou, eu pensaria que é um comportamento normal.

    EDIT2: Não encontro nenhum problema com a saída de estatísticas de espera que você postou. Também suponho que seu servidor não foi reiniciado recentemente, caso contrário, as estatísticas de espera não serão úteis.

    • 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