Compartilhar via


Configurando o Registro

O SymProxy armazena suas configurações nessa chave do Registro.

HKLM/Software/Microsoft/Symbol Server Proxy

Essa chave do Registro controla o local do qual localizar símbolos a serem armazenados no site, o nível de log e se o SymProxy opera ou não com uma conexão direta com a rede. Você pode criar essa chave executando a ferramenta de registro SymProxy (Symproxy.reg) fornecida com as Ferramentas de Depuração para Windows. Digite symproxy.reg no prompt de comando ou clique duas vezes nele no Windows Explorer.

Isso adicionará entradas para as configurações que serão prefixadas com um "x" para que elas sejam desabilitadas. Para habilitar uma configuração, remova o "x" da frente da configuração desejada.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Symbol Server Proxy]
"Available Settings"="Remove the 'x' prefix to use the setting"
"xMissAgeTimeout"=dword:00015180
"xMissAgeCheck"=dword:00000e10
"xMissTimeout"=dword:00000e10
"xNoCache"=dword:00000001
"xNoFilePointers"=dword:00000001
"xNoInternetProxy"=dword:00000001
"xNoLongerIndexedAuthoritive"=dword:00000001
"xNoUncompress"=dword:00000001
"xRequestTimeout"=dword:0000019
"xRetryAppHang"=dword:0000002
"xUriFilter"=dword:00000FF
"xUriTiers"=dword:0000001

O arquivo de registro symproxy.reg pressupõe um nome de diretório virtual de Símbolos e configura o Caminho do Símbolo para usar o Servidor de Símbolos Públicos da Microsoft.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Symbol Server Proxy\Web Directories]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Symbol Server Proxy\Web Directories\Symbols]
"SymbolPath"="https://msdl.microsoft.com/download/symbols"

As entradas de log de eventos em symproxy.reg são abordadas por último na seção Log de Eventos deste tópico.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\Microsoft-Windows-SymProxy]
"ProviderGuid"="{0876099c-a903-47ff-af14-52035bb479ef}"
"EventMessageFile"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,\
  00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,\
  5c,00,69,00,6e,00,65,00,74,00,73,00,72,00,76,00,5c,00,53,00,79,00,6d,00,50,\
  00,72,00,6f,00,78,00,79,00,2e,00,64,00,6c,00,6c,00,00,00
"TypesSupported"=dword:00000007

As entradas do diretório Web em symproxy.reg são discutidas neste tópico.

Diretórios Web

Para cada diretório virtual gerado no IIS que você está usando como um repositório de símbolos, você deve configurar uma chave do Registro abaixo da subchave Diretórios Web da chave do Registro a seguir.

HKLM/Software/Microsoft/Symbol Server Proxy

Para editar a chave do Registro de um diretório virtual do repositório de símbolos

  • Edite o conteúdo do SymbolPath para conter todos os repositórios de símbolos usados pelo repositório de símbolos SymProxy. Se houver mais de um repositório de símbolos sendo usado, separe-os com ponto e vírgula. Há suporte para no máximo 10 repositórios para cada valor. Os caminhos HTTP devem incluir o prefixo https:// e os caminhos UNC devem incluir o \\ prefixo .

Por exemplo, se um dos diretórios virtuais for chamado símbolos e os símbolos armazenados que ele acessa estiverem localizados no repositório UNC \\symbols\symbols e no repositório https://msdl.microsoft.com/download/symbolsHTTP , crie a seguinte chave do Registro.

HKLM/Software/Microsoft/Symbol Server Proxy/Web Directories/Symbols

Depois que essa chave for criada, edite seu SymbolPath para ser \\symbols\symbols;https://msdl.microsoft.com/download/symbols. Isso pode ser visto na captura de tela a seguir do Editor do Registro.

Captura de tela do Editor do Registro exibindo um SymbolPath atualizado.

Neste exemplo, symProxy primeiro procura símbolos em \\symbols\symbols. Se os arquivos não forem encontrados lá, o Repositório de Símbolos da Microsoft será usado.

  • Em cada uma das chaves em Diretórios Web que correspondem aos nomes do Diretório Virtual, é necessário criar um REG_SZ chamado SymbolPath. O valor contém todos os upstream repositórios de símbolos que serão usados para preencher o repositório de símbolos SymProxy.

  • Há suporte para no máximo 10 entradas.

  • Separar entradas com ponto e vírgula.

  • Os caminhos UNC precisam incluir o prefixo "\\"

  • Os caminhos HTTP precisam incluir o prefixo "https://"

  • Solicite os valores do menos caro para o mais caro.

    • Você precisará equilibrar as metas de desempenho de uso versus os custos de comunicação de servidor e dados no cálculo.

    • Em geral, coloque servidores SMB/HTTP locais antes dos servidores HTTP da Internet.

Contadores de desempenho do SymProxy

O SymProxy pode emitir contadores de desempenho por meio de um provedor chamado SymProxy.

Para habilitar o suporte aos contadores de desempenho, registre o arquivo de manifesto symproxy em uma janela de comando do administrador:

C:\> lodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man

Para desabilitar o suporte aos contadores de desempenho, cancele o registro do manifesto:

C:\> unlodctr.exe /m:%WINDIR%\system32\inetsrv\symproxy.man

Rastreamento de Eventos SymProxy para Windows

O SymProxy pode criar eventos ETW por meio de um provedor chamado Microsoft-Windows-SymProxy.

C:\> logman query providers | findstr SymProxy
Microsoft-Windows-SymProxy {0876099C-A903-47FF-AF14-52035BB479EF}

Para habilitar o suporte ao ETW, registre o arquivo de manifesto:

C:\> wevtutil.exe install-manifest %WINDIR%\system32\inetsrv\symproxy.man

Para desabilitar o suporte ao ETW, cancele o registro do arquivo de manifesto:

C:\> wevtutil.exe uninstall-manifest %WINDIR%\system32\inetsrv\symproxy.man

Log de Eventos

Se o ETW estiver configurado, os eventos serão registrados como eventos nos canais Operacional e Analítico em Logs de Aplicativos e Serviços\Microsoft\Windows\SymProxy no Log de Eventos.

Para exibir corretamente a mensagem das entradas do Log de Eventos, a área log de eventos do arquivo symproxy.reg precisa ser adicionada ao registro:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\Microsoft-Windows-SymProxy]
"ProviderGuid"="{0876099c-a903-47ff-af14-52035bb479ef}"
"EventMessageFile"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,\
  00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,\
  5c,00,69,00,6e,00,65,00,74,00,73,00,72,00,76,00,5c,00,53,00,79,00,6d,00,50,\
  00,72,00,6f,00,78,00,79,00,2e,00,64,00,6c,00,6c,00,00,00
"TypesSupported"=dword:00000007

Eventos SymProxy

O SymProxy registra os seguintes eventos:

ID do evento Descrição Channel
1 Início do filtro ISAPI Admin
2 Parar o filtro ISAPI Admin
3 Configuração do filtro ISAPI Admin
4 Estatísticas de cache de miss Admin
10 Solicitação de URL – Ocorrência no Cache Local Operacional
11 Solicitação de URL – Erro no cache local Operacional
20 Download de símbolo via SymSrv Operacional
30 Símbolo crítico ausente Admin
31 Imagem crítica ausente Admin
40 SymSrv – Caminho não encontrado Admin
41 SymSrv – Arquivo não encontrado Admin
42 SymSrv – Acesso negado Admin
43 SymSrv – Caminho muito longo Admin
49 SymSrv – Código de erro Admin
90 Contenção de bloqueio Operacional
100 Mensagem Crítica Geral Analítico
101 Mensagem de Erro Geral Analítico
102 Mensagem de Aviso Geral Analítico
103 Mensagem Informativa Geral Analítico
104 Mensagem de Análise Geral Analítico
105 Mensagem de Depuração Geral Depurar

Configuração do Proxy do Servidor de Símbolos

O SymProxy armazena suas configurações na seguinte área de chave do Registro:

HKLM/Software/Microsoft/Symbol Server Proxy

Nesse local, a SymProxy adquire suas configurações globais e os caminhos de símbolo de upstream repositórios de símbolos.

Você pode criar essa chave mesclando-se no arquivo symproxy.reg personalizado conforme discutido anteriormente.

Chave proxy do servidor de símbolo

A chave do Registro do Proxy do Servidor de Símbolos dá suporte às seguintes configurações globais (todas as REG_DWORD). As configurações podem ser aplicadas ao vivo reciclando o pool de aplicativos. Um novo processo de w3wp.exe será criado e lerá os novos valores. Depois que todas as solicitações pendentes para o processo de w3wp.exe antigo tiverem sido concluídas, o processo de w3wp.exe antigo terminará. O IIS, por padrão, recicla w3wp.exe processos a cada 1.740 minutos (29 horas).

REG_DWORD Descrição
NoInternetProxy

Ao executar como um serviço, SymSrv.dll usa WinHTTP em vez de WinInet para fazer solicitações HTTP. Consequentemente, talvez seja necessário definir as configurações de proxy HTTP para que o serviço possa acessar recursos de rede externos. Você pode fazer isso usando o programa netsh. Digite "netsh.exe winhttp -?" para obter instruções.

Por padrão, o SymProxy usa o proxy HTTP designado. Se nenhum proxy HTTP estiver configurado, o SymProxy usará um proxy fictício. Isso permite acesso seguro a sites HTTP em sua intranet. Como efeito colateral, isso impede que o SymProxy se conecte diretamente a sites não seguros.

  • Não especificado – (padrão) Desabilitado – o proxy é usado
  • 0 – Desabilitado
  • 1+ – Habilitado

NoFilePointers

Por padrão, para símbolos que não existem, o SymProxy procurará um arquivo file.ptr ao lado do arquivo solicitado (no cache local). Se encontrado, ele retornará o local especificado pelo arquivo file.ptr. Essa capacidade só é necessária quando o cache local está sendo preenchido por SymStore.exe.

  • Não especificado – (padrão) Desabilitado – os arquivos file.ptr são pesquisados/lidos
  • 0 – Desabilitado
  • 1+ – Habilitado

NoUncompress

Por padrão, o SymProxy descompactará os símbolos baixados antes de retornar o arquivo ao chamador. Isso reduz a CPU no cliente, mas aumenta a E/S.

  • Não especificado – (padrão) Desabilitado – Ocorre descompactação
  • 0 – Desabilitado
  • 1+ – Habilitado

Nocache

Por padrão, o SymProxy armazenará em cache símbolos baixados no sistema de arquivos local, definido pelo caminho do diretório virtual.

  • Não especificado – (padrão) Desabilitado – ocorre o cache
  • 0 – Desabilitado
  • 1+ – Habilitado

MissTimeout

Período de tempo limite, em segundos, para o qual os símbolos ausentes são relatados como ausentes sem consultar novamente os servidores de símbolos upstream.

Uma falha está associada a uma hora baseada em UTC. As solicitações subsequentes para o arquivo são imediatamente rejeitadas por N segundos.

A primeira solicitação para o arquivo após N segundos faz com que os repositórios de símbolos upstream sejam consultados novamente.

Em caso de êxito, o arquivo de símbolo é retornado e a falha é excluída.

Em caso de falha, a falha é movida para a hora atual (em UTC) para iniciar um novo período de tempo limite.

Use os contadores de desempenho "Miss Cache" para monitorar as falhas.

  • Não especificado – (padrão) 300 segundos/5 minutos
  • 0 – Recurso desabilitado
  • N – O tempo limite dura N segundos

MissAgeCheck

Período entre verificações de Miss Idade. O cache Miss é verificado e os registros mais antigos do que os segundos missAgeTimeout são removidos.

As estatísticas atuais são salvas no Log de Eventos usando a ID de Evento 4.

  • Não especificado – (padrão) 3600 segundos/1 hora
  • 0 – Recurso desabilitado
  • N – Período entre verificações em N segundos

MissAgeTimeout

Limpar o tempo limite de cada entrada de cache miss. A entrada é limpa devido ao absense de qualquer solicitação para ela durante esse período.

  • Não especificado – (padrão) 86400 segundos/1 dia
  • 0 – Recurso desabilitado
  • N – Tempo limite de entradas em N segundos

NoLongerIndexedAuthoritive

Quando habilitada, uma resposta file.ptr de NoLongerIndexed será tratada como autoritiva em todos os Repositórios de Símbolos.

Use isso para evitar chamadas (desnecessárias) para servidores que não indexam o arquivo.

  • Não especificado – (padrão) Desabilitado
  • 0 – Desabilitado
  • 1+ – Habilitado

RetryAppHang

Habilite Repetir para os repositórios de símbolos HTTP upstream. Isso é equivalente à opção SymSrv SSRVOPT_RETRY_APP_HANG (0x80000000).

No recebimento de um código de erro de 0x80070512/HRESULT_FROM_WIN32(ERROR_APP_HANG) por meio do cabeçalho de resposta HTTP 'Symbol-Agent-Status' de um repositório de símbolos HTTP upstream, o soquete será mantido aberto e o GET será repetido até 'N' vezes.

O SymProxy agrupa várias solicitações para o mesmo URI. Quando qualquer solicitação pendente atingir 25 segundos, symProxy retornará 0x80070512 ao chamador por meio de um cabeçalho de resposta HTTP 'Symbol-Agent-Status', mas continuará a operação em segundo plano.

Os clientes devem habilitar a opção SSRVOPT_RETRY_APP_HANG no SymSrv para que (extra) solicitações longas sejam suportadas – em essência, encadeando a upstream de repetição.

SymProxy usa como padrão o tempo limite de resposta para 25 segundos para que uma resposta seja feita antes que o soquete feche no tempo limite (padrão) de 30 segundos que o SymSrv usa para armazenamentos de símbolos HTTP. Versões posteriores do SymSrv enviam seu valor de Tempo limite HTTP configurado por meio do cabeçalho de solicitação HTTP 'Symbol-Agent-Receive-Timeout' (em mSec). Se esse cabeçalho de solicitação HTTP for fornecido, esse valor será usado em vez do padrão de 25 segundos.

  • Não especificado – (padrão) Desabilitado
  • 0 – Desabilitado
  • N – Tentativas de repetição

UriFilter

Habilitar a Filtragem de URI. Isso é equivalente à opção SymSrv SSRVOPT_URI_FILTER (0x20000000).

A Filtragem de URI reduz a variedade de solicitações para todos os repositórios de símbolos upstream. Os valores são uma máscara de bits.

HTTP – SSRVURI_HTTP_MASK (0x0F)

  • 0x01 - SSRVURI_HTTP_NORMAL - por exemplo. http://symbols/.../foo.pdb
  • 0x02 - SSRVURI_HTTP_COMPRESSED - por exemplo, http://symbols/.../foo.pd_
  • 0x04 - SSRVURI_HTTP_FILEPTR - por exemplo, http://symbols/.../file.ptr

UNC – SSRVURI_UNC_MASK (0xF0)

  • 0x10 - SSRVURI_UNC_NORMAL - por exemplo, \\MyServer\Symbols\...\foo.pdb
  • 0x20 - SSRVURI_UNC_COMPRESSED - por exemplo, \\MyServer\Symbols\...\foo.pd_
  • 0x40 - SSRVURI_UNC_FILEPTR - por exemplo, \\MyServer\Symbols\...\file.ptr

UriTiers

Habilitar camadas de URI. Isso é equivalente à opção SymSrv SSRVOPT_URI_TIERS (0x40000000).

As camadas de URI forçam o esquema de camada usado por todos os repositórios de símbolos upstream. Quando não definido, uma solicitação adicional é necessária para determinar o esquema. A existência de 'index2.txt' na raiz indica um layout de 2 camadas.

Repositórios de 1 camada estão em formato: /widget.dll/<index>/widget.dll|widget.dl_|file.ptr

Os repositórios de 2 camadas estão em formato: /wi/widget.dll/<index>/widget.dll|widget.dl_|file.ptr

  • Não especificado – (padrão) Desabilitado
  • 0 – Desabilitado
  • 1 – Repositórios de símbolos de 1 camada
  • 2 – Repositórios de símbolos de 2 camadas

Acessando recursos de rede externos

Quando o SymSrv é usado em conjunto com o SymProxy, ele é executado como um serviço e usa a API WinHTTP para acessar símbolos em uma conexão HTTP. Isso difere de seu comportamento habitual de usar WinInet para essa finalidade.

Consequentemente, talvez seja necessário definir as configurações de proxy HTTP para que esse serviço possa acessar recursos de rede externos. Use um dos seguintes métodos para definir estas configurações:

  • Use a ferramenta Netsh (netsh.exe). Para obter instruções, digite o seguinte em uma janela do Prompt de Comando:

    netsh winhttp -? 
    

O comportamento padrão do SymProxy é usar qualquer proxy HTTP designado por ProxyCfg ou Netsh. Se nenhum proxy HTTP estiver configurado, o SymProxy usará um proxy fictício para permitir o acesso a sites HTTP seguros em sua intranet. Como efeito colateral, essa técnica impede que o SymProxy trabalhe com conexões diretas com a Internet externa. Se você quiser permitir que o SymProxy opere com uma conexão direta com a Internet, crie um valor REG_DWORD chamado NoInternetProxy na chave proxy do servidor de símbolos do registro. Defina o valor de NoInternetProxy como 1 e verifique se não há nenhum proxy HTTP indicado por ProxyCfg.