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.
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.
|
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.
|
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.
|
Nocache | Por padrão, o SymProxy armazenará em cache símbolos baixados no sistema de arquivos local, definido pelo caminho do diretório virtual.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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)
UNC – SSRVURI_UNC_MASK (0xF0)
|
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
|
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.