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 / 179585
Accepted
John Zabroski
John Zabroski
Asked: 2017-07-12 09:06:00 +0800 CST2017-07-12 09:06:00 +0800 CST 2017-07-12 09:06:00 +0800 CST

Alto ASYNC_NETWORK_IO quando o usuário bloqueia o computador com o Excel aberto

  • 772

Eu tenho um usuário que entra às 8h e sai às 18h todos os dias, e todos os dias vejo o mesmo padrão estranho no SolarWinds DPA.

Parece que o Excel está atualizando a Tabela de Consulta quando o usuário bloqueia sua tela. Minhas perguntas são:

  1. Existe alguma maneira de impedir o Excel de fazer isso? Não posso ser o único DBA que lutou contra esses problemas.
  2. Existe alguma maneira de eu reproduzir o problema na minha máquina?
  3. Ajuda para encontrar palavras-chave do Google para pesquisar um problema conhecido... Tentei sem sucesso

E/S de rede assíncrona alta do Excel

ATUALIZAR

Ocorreu-me que poderia haver outros fatores em jogo aqui, então aqui vai:

  1. O arquivo está em uma unidade de armazenamento conectada à rede compartilhada entre um grupo de trabalho.
  2. Examinei vários problemas de recursos de economia de energia da placa de interface de rede que podem estar fazendo com que o Excel pense que o identificador do arquivo está perdido (???)
  3. "Atualizar dados ao abrir o arquivo" está marcado em Propriedades de conexão
  4. Isso pode estar ocorrendo em uma máquina virtual.

Encontrei outro usuário com um problema semelhante: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/bcc35121-1575-4a7f-b82f-1c20f6fed58d/process-blocked-by-asyncnetworkio-status -blocks-other-queries?forum=sqldatabaseengine

performance excel
  • 1 1 respostas
  • 1586 Views

1 respostas

  • Voted
  1. Best Answer
    John Zabroski
    2017-07-27T09:07:28+08:002017-07-27T09:07:28+08:00

    ASYNC_NETWORK_IOpode causar problemas de contenção de banco de dados se os resultados enviados ao cliente nunca forem enviados para nenhum lugar (por exemplo, por meio de uma ORDER BYcláusula forçando uma classificação em tempdb).

    Se esse problema estiver ocorrendo com o Excel, o problema provavelmente se deve a uma atualização de conexão de banco de dados do Excel no thread em segundo plano e ao usuário bloquear simultaneamente seu computador durante a atualização em segundo plano. Quando o encadeamento em segundo plano estiver concluído, o computador será bloqueado. O problema é que no Win32, um computador bloqueado significa que o objeto de sessão do usuário não está disponível. Quando o objeto de sessão do usuário não está disponível, não há nenhum lugar para o thread em segundo plano retornar os resultados e ele apenas trava, aguardando o Excel.exe ler os resultados. Como os resultados nunca chegam a lugar algum, o ASYNC_NETWORK_IObloqueio causa um livelock em todos os bloqueios adquiridos anteriormente. Em si, ASYNC_NETWORK_IOé inofensivo. É a corrente de bloqueio que está causando o dano.

    Para resumir, esse problema pode acontecer nas duas condições a seguir:

    1. ASYNC_NETWORK_IO está presente devido a um leitor lento (no meu caso, o leitor lento está bloqueado devido ao objeto de sessão do usuário Win32 indisponível)
    2. Os resultados nunca são enviados para algum objeto intermediário, implicitamente (por exemplo, ORDER BYdesencadeando uma classificação na tempdbtabela subjacente, porque os dados são muito grandes para classificar completamente na memória) ou explicitamente ( INSERTresulta em uma tempdbtabela, faça SELECTna tabela tempdb, que libera o livelock).

    Duas opções:

    1. Se você não tem controle sobre a lentidão do cliente?

    uma. Grave os resultados da consulta em uma tabela temporária. Devolva a tabela temporária ao usuário.

    b. Além disso, não se esqueça de SET NOCOUNT ON na parte superior do procedimento armazenado, para evitar atrasos de ida e volta devido ao envio de mensagens DONE_IN_PROC TDS ao cliente.

    1. Se você tem controle sobre a lentidão do cliente?

    uma. Verifique se a NIC está configurada incorretamente ou se o cliente está usando uma VM e a NIC da VM está configurada incorretamente. Veja: https://www.reddit.com/r/sysadmin/comments/2k7jn5/after_2_years_i_have_finally_solved_my_slow/

    b. Meça usando Perfmon. A Microsoft usa uma heurística de 10 para o comprimento da fila de saída de rede PerfMon. Consulte: https://technet.microsoft.com/en-us/library/aa997365(v=exchg.80).aspx

    c. Adicione os manipuladores de eventos Query BeforeRefresh e AfterRefresh às dicas de registro de instrumentos na Planilha para determinar o que o usuário está fazendo. Em particular, consulte "XL2000: Como usar os eventos de consulta BeforeRefresh e AfterRefresh": https://support.microsoft.com/en-us/help/213187/xl2000-how-to-use-the-query-beforerefresh- e-eventos-após-atualização

    d. Escreva um suplemento do Excel que armazene em cache suas chamadas SQL.

    ATUALIZAÇÃO 19/01/2018

    Ainda estou lidando com problemas altos de ASYNC_NETWORK_IO com usuários do Excel. Acredito ter encontrado mais causas potenciais para isso, mas estas são apenas teorias neste momento:

    1. Se você tiver várias tabelas na mesma planilha e a última tabela à direita tiver mais linhas do que as tabelas à esquerda, isso parece fazer com que o Excel "pisque" muito. Da mesma forma, no SolarWinds Database Performance Analyzer, as consultas nesta planilha que retornam o maior número de linhas e colunas também apresentam os maiores problemas de ASYNC_NETWORK_IO. (Os próximos passos para mim são reproduzir esse problema, mas não tenho certeza se vale a pena, pois convenci um usuário de que eles não precisavam desse enorme conjunto de resultados por enquanto.)

    2. Encontrei um comentário no Experts Exchange ( https://www.experts-exchange.com/questions/25049176/Slow-queries-excuted-throug-network-ASYNC-NETWORK-IO.html ) onde alguém disse resultados de 5.000 linhas ou mais são conhecidos por causar problemas. Isso parece realmente ser uma recomendação levantada internamente pelo aplicativo Microsoft Dynamics NAV, que é notório por causar instabilidade no SQL Server devido a altas esperas de ASYNC_NETWORK_IO. A mensagem de erro que o aplicativo gera é: "O número de registros na tabela excede o número máximo de 5.000. Defina um filtro para diminuir o número de registros na tabela. Exportar muitos registros de uma vez pode afetar o desempenho do sistema." Mas isso é apenas um palpite.

    3. Para tarefas SSIS Excel Destination, se o usuário não tiver permissão para gravar na pasta Temporary Internet Files, ele poderá travar: https://stackoverflow.com/a/23523954/1040437 (novamente, apenas uma teoria, pois uso isso tentar reunir todas as teorias possíveis em um só lugar.)

    • 1

relate perguntas

  • Existe um ganho de desempenho ao manipular dados com procedimentos armazenados em vez de alimentá-los em funções após a recuperação?

  • Como você ajusta o MySQL para uma carga de trabalho pesada do InnoDB?

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

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

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