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


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

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 предполагает виртуальное имя каталога Symbols и настраивает путь к символам для использования сервера общедоступных символов Майкрософт.

[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, который используется в качестве хранилища символов, необходимо настроить раздел реестра под подразделом "Веб-каталоги " следующего раздела реестра.

HKLM/Software/Microsoft/Symbol Server Proxy

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

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

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

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

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

Снимок экрана: редактор реестра с обновленным SymbolPath.

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

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

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

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

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

  • Http-пути должны содержать префикс "https://"

  • Упорядочение значений с наименьших затрат на самые дорогие.

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

    • Как правило, локальные серверы SMB/HTTP помещают перед 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 может создавать события трассировки событий Windows с помощью поставщика 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

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

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

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

Если трассировка событий Windows настроена, события записываются как события в операционных и аналитических каналах в разделе Журналы приложений и служб\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 — код ошибки Административный
90 Конфликт блокировки Операционный
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.

  • Unspecified ( по умолчанию) Disabled — file.ptr files are search for/read
  • 0 — отключено;
  • 1+ — включено

NoUncompress

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

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

NoCache

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

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

MissTimeout

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

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

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

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

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

Используйте счетчики производительности Miss Cache для отслеживания промахов.

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

MissAgeCheck

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

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

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

MissAgeTimeout

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

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

NoLongerIndexedAuthoritive

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

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

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

RetryAppHang

Включите Retry to the вышестоящий HTTP Symbol Store. Это эквивалентно параметру SymSrv SSRVOPT_RETRY_APP_HANG (0x80000000).

При получении кода ошибки 0x80070512/HRESULT_FROM_WIN32(ERROR_APP_HANG) через заголовок ответа HTTP Symbol-Agent-Status из хранилища символов ВЫШЕСТОЯЩИЙ 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

Двухуровневые хранилища имеют формат /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.