Настройка реестра
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. Это можно увидеть на следующем снимке экрана редактора реестра.
В этом примере 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 к незащищенным сайтам.
|
NoFilePointers | По умолчанию для символов, которые не существуют, SymProxy будет искать файл file.ptr рядом с запрошенным файлом (в локальном кэше). Если он найден, он вернет расположение, указанное в файле file.ptr. Эта возможность необходима, только если локальный кэш заполняется SymStore.exe.
|
NoUncompress | По умолчанию SymProxy распаковывает скачанные символы перед возвратом файла вызывающей объекту. Это снижает загрузку ЦП на клиенте, но увеличивает количество операций ввода-вывода.
|
NoCache | По умолчанию SymProxy кэширует загруженные символы в локальную файловую систему, определенную путем к виртуальному каталогу.
|
MissTimeout | Период ожидания (в секундах), в течение которого отсутствующие символы отображаются как отсутствующие без повторного запроса вышестоящий серверов символов. Промах связан с временем в формате UTC. Последующие запросы для файла немедленно отклоняются на N секунд. Первый запрос файла через N секунд приводит к повторному запросу к хранилищу символов вышестоящий. При успешном выполнении возвращается файл символов, а промах удаляется. При сбое промах перемещается вперед к текущему времени (в формате UTC), чтобы начать новый период ожидания. Используйте счетчики производительности Miss Cache для отслеживания промахов.
|
MissAgeCheck | Период между проверками мисс возраст. Кэш miss проверяется, и записи, возраст которых превышает значения MissAgeTimeout секунд, удаляются. Текущая статистика сохраняется в журнале событий с идентификатором события 4.
|
MissAgeTimeout | Время ожидания очистки каждой записи промаха кэша. Запись очищается из-за отсутствия каких-либо запросов на нее в течение этого периода.
|
NoLongerIndexedAuthoritive | Если этот параметр включен, ответ file.ptr noLongerIndexed будет рассматриваться как авторитивный во всех хранилищах символов. Используйте его, чтобы избежать (ненужных) вызовов к серверам, которые не индексировать файл.
|
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-секундного значения по умолчанию.
|
UriFilter | Включите фильтрацию URI. Это эквивалентно параметру SymSrv SSRVOPT_URI_FILTER (0x20000000). Фильтрация URI сокращает количество запросов ко всем вышестоящий хранилищам символов. Значения представляют собой битовую маску. HTTP — SSRVURI_HTTP_MASK (0x0F)
UNC — SSRVURI_UNC_MASK (0xF0)
|
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
|
Доступ к внешним сетевым ресурсам
Когда 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.