Поделиться через


Настройка реестра

SymProxy сохраняет параметры в этом ключе реестра.

HKLM/Software/Microsoft/Symbol Server Proxy

Этот раздел реестра управляет местом для поиска символов для хранения на веб-сайте, уровнем ведения журнала и работает ли SymProxy с прямым подключением к сети. Этот ключ можно создать, выполнив инструмент регистрации SymProxy (Symproxy.reg), предоставленный Средствами отладки для Windows. Введите symproxy.reg в командной строке или дважды щелкните его в проводнике Windows.

Будут добавлены записи для параметров с префиксом "x", что означает их отключение. Чтобы включить параметр, удалите "x" перед нужным параметром.

[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

Файл реестра symproxy.reg предполагает имя виртуального каталога символов и настраивает путь к символам для использования сервера открытых символов Майкрософт.

[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"

Записи журнала событий в symproxy.reg рассматриваются позже в разделе журнала событий этой темы.

[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

Записи веб-каталога, содержащиеся в symproxy.reg, рассматриваются в этом разделе.

Веб-каталоги

Для каждого виртуального каталога, созданного в IIS, который вы используете в качестве хранилища символов, необходимо настроить ключ реестра в подразделе Web Directories следующего ключа реестра.

HKLM/Software/Microsoft/Symbol Server Proxy

Изменить раздел реестра для виртуального каталога хранилища символов

  • Измените содержимое SymbolPath , чтобы содержать все хранилища символов, используемые хранилищем символов SymProxy. Если используется несколько хранилищ символов, разделите их точкой с запятой. Для каждого значения поддерживается не более 10 хранилищ. Пути HTTP должны включать префикс https://, а UNC-пути должны включать \\ префикс.

Например, если один из виртуальных каталогов называется Symbols, и символы, которые он использует, находятся в хранилище UNC \\symbols\symbols и HTTP хранилище https://msdl.microsoft.com/download/symbols, создайте следующий раздел реестра.

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

После создания этого ключа измените значение SymbolPath на \\symbols\symbols\symbols;https://msdl.microsoft.com/download/symbols. Это можно увидеть на следующем снимке экрана редактора реестра.

Снимок экрана редактора реестра, отображающего обновленный SymbolPath.

В этом примере SymProxy сначала ищет символы в \\symbols\symbols. Если файлы не найдены, будет использоваться Microsoft Symbol Store.

  • В каждом ключе в разделах веб-каталогов, названия которых соответствуют именам виртуальных каталогов, необходимо создать REG_SZ с именем SymbolPath. Значение содержит все исходные хранилища символов, которые будут использоваться для заполнения хранилища символов SymProxy.

  • Поддерживаются не более 10 записей.

  • Отделяйте записи точкой с запятой.

  • UNC-пути должны включать префикс "\\\\"

  • Пути HTTP должны включать префикс "https://"

  • Расположите значения от наименьшей стоимости к наибольшей.

    • Необходимо сбалансировать цели производительности использования с затратами на обмен данными и затраты на связь с сервером в расчетах.

    • Как правило, перед http-серверами интернета помещайте локальные SMB/HTTP-серверы.

Счетчики производительности SymProxy

SymProxy может выдавать счетчики производительности через поставщика SymProxy.

Чтобы включить поддержку счетчиков производительности, зарегистрируйте файл манифеста symproxy в командном окне администратора:

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

Чтобы отключить поддержку счетчиков производительности, отмените регистрацию манифеста:

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

Трассировка событий SymProxy для Windows

SymProxy может создавать события ETW с помощью поставщика Microsoft-Windows-SymProxy.

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

Чтобы включить поддержку ETW, зарегистрируйте файл манифеста:

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

Чтобы отключить поддержку ETW, отмените регистрацию файла манифеста:

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

Журнал событий

Если трассировка событий (ETW) настроена, события записываются в каналах оперативных и аналитических данных в журнале приложений и служб\Microsoft\Windows\SymProxy в журнале событий.

Чтобы правильно просмотреть сообщение записей журнала событий, необходимо добавить в реестр область журнала событий файла symproxy.reg:

[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

События SymProxy

SymProxy регистрирует следующие события:

Идентификатор события Описание Канал
1 Начало фильтра ISAPI Администратор
2 Остановка фильтра ISAPI Администратор
3 Настройка фильтра ISAPI Администратор
4 Статистика промахов кэша Администратор
10 Запрос URL-адреса — удачное обращение к локальному кэшу Операционный
11 Запрос URL — промах в локальном кэше Операционный
20 Скачивание символов с помощью SymSrv Операционный
30 Отсутствует критически важный символ Администратор
31 Отсутствует критическое изображение Администратор
40 SymSrv — путь не найден Администратор
41 Symsrv — файл не найден Администратор
42 SymSrv — доступ запрещен Администратор
43 SymSrv — путь слишком длинный Администратор
49 SymSrv — код ошибки Администратор
девяносто Блокировка конфликтов Операционный
100 Общее критическое сообщение Аналитический
101 Общее сообщение об ошибке Аналитический
102 Сообщение общего предупреждения Аналитический
103 Общее информационное сообщение Аналитический
104 Общее аналитическое сообщение Аналитический
105 Общее сообщение отладки Отладка

Конфигурация прокси-сервера символов

SymProxy сохраняет параметры конфигурации в следующем ключе реестра:

HKLM/Software/Microsoft/Symbol Server Proxy

В этом расположении SymProxy получает свои глобальные параметры и пути символов в хранилищах вышестоящих символов.

Этот ключ можно создать, объединив с файлом symproxy.reg, который вы настроили, как описано ранее.

Ключ прокси-сервера символов

Раздел реестра прокси-сервера символов поддерживает следующие глобальные параметры (все REG_DWORD). Параметры можно применять в режиме реального времени путем повторного использования пула приложений. Будет создан новый процесс w3wp.exe, и он считывает новые значения. После завершения всех ожидающих запросов к старому процессу w3wp.exe завершится старый процесс w3wp.exe. IIS по умолчанию перезапускает процессы w3wp.exe каждые 1740 минут (29 часов).

REG_DWORD Описание
NoInternetProxy

При выполнении как службы SymSrv.dll использует WinHTTP вместо WinInet для выполнения HTTP-запросов. Следовательно, может потребоваться настроить параметры прокси-сервера HTTP, чтобы служба может получить доступ к внешним сетевым ресурсам. Это можно сделать с помощью программы netsh. Введите "netsh.exe winhttp -?" для инструкций.

По умолчанию SymProxy использует назначенный прокси-сервер HTTP. Если прокси-сервер HTTP не настроен, SymProxy будет использовать фиктивный прокси-сервер. Это обеспечивает безопасный доступ к сайтам HTTP в интрасети. В качестве побочных эффектов это предотвращает непосредственное подключение SymProxy к небезопасным сайтам.

  • Не указано — (по умолчанию) отключен — используется прокси-сервер
  • 0 — отключен
  • 1+ — включен

NoFilePointers

По умолчанию для символов, которые не существуют, SymProxy будет искать файл file.ptr рядом с запрошенным файлом (в локальном кэше). При обнаружении он вернет расположение, указанное файлом file.ptr. Эта возможность требуется только в том случае, если локальный кэш заполняется SymStore.exe.

  • Не указано — (по умолчанию) отключено — выполняется поиск и чтение файлов типа file.ptr
  • 0 — отключен
  • 1+ — включен

NoUncompress

По умолчанию SymProxy распаковывает загруженные символы перед возвратом файла вызывающей стороне. Это сокращает ЦП на клиенте, но увеличивает число операций ввода-вывода.

  • Не указано — (по умолчанию) отключено — происходит декомпрессия
  • 0 — отключен
  • 1+ — включен

Без кеширования

По умолчанию SymProxy кэширует загруженные символы в локальную файловую систему, путь которой определяется виртуальным каталогом.

  • Не указано — (по умолчанию) отключено — кэширование происходит
  • 0 — отключен
  • 1+ — включен

MissTimeout

Период времени ожидания ( в секундах), для которого отсутствующие символы отображаются как отсутствующие без повторного запроса вышестоящих серверов символов.

Пропуск связан со временем, основанным на UTC. Последующие запросы к файлу немедленно отклоняются в течение N секунд.

Первый запрос файла после N секунд приводит к повторному запросу в хранилищах вышестоящих символов.

При успешном выполнении возвращается файл символов и удаляется отсутствует.

При сбое пропуск переносится на текущее время (в формате UTC), чтобы начать новый таймаут.

Используйте счетчики производительности "Мисс Кэш" для отслеживания пропущенных ошибок.

  • Не указано — (по умолчанию) 300 секунд/5 минут
  • 0 — отключена функция
  • N — время ожидания длится N секунд

MissAgeCheck

Период между проверками возраста мисс. Кэш "Мисс" сканируется, и записи, которые старше MissAgeTimeout секунд, удаляются.

Текущая статистика сохраняется в журнале событий с помощью идентификатора события 4.

  • Не указано — (по умолчанию) 3600 секунд / 1 час
  • 0 — отключена функция
  • N — период между проверками в N секундах

MissAgeTimeout

Время ожидания очистки каждой записи кэша мисс. Запись удалена из-за отсутствия каких-либо запросов на неё в течение этого периода.

  • Не указано — (по умолчанию) 86400 секунд / 1 день
  • 0 — отключена функция
  • N — время ожидания записей в N секундах

БольшеНеИндексируетсяАвторитетно

Если этот параметр включен, ответ NoLongerIndexed file.ptr будет рассматриваться как авторитетный в всех хранилищах символов.

Используйте это, чтобы избежать (ненужных) вызовов на серверы, которые не индексируют файл.

  • Не указано — (по умолчанию) Отключен
  • 0 — отключен
  • 1+ — включен

Перезапуск зависшего приложения

Включите повторную попытку для вышестоящих хранилищ символов HTTP. Это эквивалентно параметру SymSrv SSRVOPT_RETRY_APP_HANG (0x80000000).

При получении кода ошибки 0x80070512/HRESULT_FROM_WIN32(ERROR_APP_HANG) через заголовок 'Symbol-Agent-Status' HTTP-ответа из внешнего HTTP-хранилища символов, сокет будет оставаться открытым, и GET-запрос будет повторяться до "N" раз.

SymProxy объединяет несколько запросов для одного и того же URI. Когда время ожидания любого запроса достигает 25 секунд, SymProxy возвращает вызывающему 0x80070512 через HTTP-заголовок Symbol-Agent-Status, при этом продолжая её выполнение в фоновом режиме.

Клиенты должны включить параметр SSRVOPT_RETRY_APP_HANG в SymSrv, чтобы поддерживать очень длинные запросы, по сути, объединяя повторные попытки в один процесс.

SymProxy по умолчанию устанавливает время ожидания отклика на 25 секунд, чтобы ответ был получен до того, как сокет будет закрыт по истечении 30-секундного времени ожидания, используемого SymSrv для HTTP-хранилищ символов. Более поздние версии SymSrv отправляют настроенное значение времени ожидания HTTP через заголовок HTTP-запроса Symbol-Agent-Receive-Timeout (в mSec). Если указан этот заголовок HTTP-запроса, это значение используется вместо 25 секунд по умолчанию.

  • Не указано — (по умолчанию) Отключен
  • 0 — отключен
  • N — повторные попытки

UriFilter

Включение фильтрации URI. Это эквивалентно параметру SymSrv SSRVOPT_URI_FILTER (0x20000000).

Фильтрация URI уменьшает количество запросов ко всем вышестоящим хранилищам символов. Значения представляют собой битовую маску.

HTTP - SSRVURI_HTTP_MASK (0x0F)

  • 0x01 - SSRVURI_HTTP_NORMAL - например: http://symbols/.../foo.pdb
  • 0x02 - SSRVURI_HTTP_COMPRESSED - например http://symbols/.../foo.pd_
  • 0x04 - SSRVURI_HTTP_FILEPTR - например, http://symbols/.../file.ptr

UNC — SSRVURI_UNC_MASK (0xF0)

  • 0x10 - SSRVURI_UNC_NORMAL - например, \\MyServer\Symbols\...\foo.pdb
  • 0x20 - SSRVURI_UNC_COMPRESSED - например, \\MyServer\Symbols\...\foo.pd_
  • 0x40 - SSRVURI_UNC_FILEPTR - например, \\MyServer\Symbols\...\file.ptr

UriTiers

Включите уровни URI. Это эквивалентно параметру SymSrv SSRVOPT_URI_TIERS (0x40000000).

Все уровни URI обязывают использовать схему уровня, применяемую всеми вышестоящими хранилищами символов. Если этот параметр не задан, для определения схемы требуется дополнительный запрос. Наличие "index2.txt" в корне указывает на двухуровневую структуру.

1-уровневые хранилища форматируются: /widget.dll/<index>/widget.dll|widget.dl_|file.ptr

2-уровневые хранилища форматируются: /wi/widget.dll/<index>/widget.dll|widget.dl_|file.ptr

  • Не указано — (по умолчанию) Отключен
  • 0 — отключен
  • 1 – 1-уровневые хранилища символов
  • 2 – 2-уровневые хранилища символов

Доступ к внешним сетевым ресурсам

Если SymSrv используется в сочетании с SymProxy, он выполняется в качестве службы и использует API WinHTTP для доступа к символам через HTTP-подключение. Это отличается от обычного поведения использования WinInet для этой цели.

Следовательно, может потребоваться настроить параметры прокси-сервера HTTP, чтобы эта служба может получить доступ к внешним сетевым ресурсам. Используйте один из следующих методов для настройки этих параметров:

  • Используйте средство Netsh (netsh.exe). Введите следующие инструкции в окне командной строки:

    netsh winhttp -? 
    

Поведение SymProxy по умолчанию заключается в использовании HTTP-прокси, который назначен либо через ProxyCfg, либо через Netsh. Если прокси-сервер HTTP не настроен, SymProxy использует фиктивный прокси-сервер, чтобы разрешить доступ к защищенным HTTP-сайтам в интрасети. В качестве побочных эффектов этот метод предотвращает работу SymProxy с прямыми подключениями к внешнему Интернету. Если вы хотите разрешить SymProxy работать с прямым подключением к Интернету, создайте значение REG_DWORD с именем NoInternetProxy в разделе прокси-сервера символов реестра. Задайте для параметра NoInternetProxy значение 1 и убедитесь, что прокси-сервер HTTP не указан в ProxyCfg.