設定登錄
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 登錄檔假設符號的虛擬目錄名稱,並設定符號路徑以使用 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"
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 中的 Web 目錄專案。
Web 目錄
針對您使用作為符號存放區之 IIS 中產生的每個虛擬目錄,您必須在下列登錄機碼的 Web 目錄 子機碼下方設定登錄機碼。
HKLM/Software/Microsoft/Symbol Server Proxy
編輯符號存放區虛擬目錄的登錄機碼
- 編輯 SymbolPath 的內容,以包含 SymProxy 符號存放區所使用的所有符號存放區。 如果使用多個符號存放區,請使用分號分隔它們。 每個值最多支援 10 個存放區。 HTTP 路徑必須包含 HTTPs:// 前置詞,而 UNC 路徑必須包含前置 \\ 詞。
例如,如果其中一個虛擬目錄稱為 Symbols,而且其存取的符號存放區位於 UNC 存放區 \\symbols\symbols\symbols 和 HTTP 存放區 https://msdl.microsoft.com/download/symbols ,請建立下列登錄機碼。
HKLM/Software/Microsoft/Symbol Server Proxy/Web Directories/Symbols
建立此索引鍵之後,請將其 SymbolPath 編輯為 \\symbols\symbols; https://msdl.microsoft.com/download/symbols 。 這可以在登錄編輯器的下列螢幕擷取畫面中看到。
在此範例中,SymProxy 會先搜尋 \\symbols\symbols 中的符號。 如果找不到檔案,將會使用 Microsoft 符號存放區。
在符合虛擬目錄名稱之 Web 目錄下的每個索引鍵中,必須建立名為 SymbolPath 的REG_SZ。 值包含將用來填入 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
適用于 Windows 的 SymProxy 事件追蹤
SymProxy 可以透過名為 Microsoft-Windows-SymProxy 的提供者建立 ETW 事件。
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 – 錯誤碼 | 管理 |
90 | 鎖定爭用 | 作業 |
100 | 一般重大訊息 | 分析 |
101 | 一般錯誤訊息 | 分析 |
102 | 一般警告訊息 | 分析 |
103 | 一般資訊訊息 | 分析 |
104 | 一般分析訊息 | 分析 |
105 | 一般偵錯訊息 | 偵錯 |
符號伺服器 Proxy 組態
SymProxy 會將其組態設定儲存在下列登錄機碼區域中:
HKLM/Software/Microsoft/Symbol Server Proxy
從這個位置,SymProxy 會取得其全域設定和上游符號存放區的符號路徑。
您可以在稍早所討論的 symproxy.reg 檔案中合併來建立此金鑰。
符號伺服器 Proxy 金鑰
符號伺服器 Proxy 登錄機碼支援下列全域設定, (所有REG_DWORD) 。 您可以回收應用程式集區來即時套用設定。 將會建立新的 w3wp.exe 程式,並讀取新的值。 一旦對舊 w3wp.exe 程式的所有擱置要求都已完成,舊的 w3wp.exe 程式將會結束。 IIS 預設會每隔 1,740 分鐘 (29 小時) 回收 w3wp.exe 進程。
REG_DWORD | Description |
NoInternetProxy | 以服務的形式執行時,SymSrv.dll 使用 WinHTTP 而不是 WinInet 提出 HTTP 要求。 因此,您可能需要設定 HTTP Proxy 設定,讓服務可以存取網路資源外部。 您可以使用 netsh 程式來執行此動作。 輸入 「netsh.exe winHTTP -?」 以取得相關指示)。 根據預設,SymProxy 會使用指定的 HTTP Proxy。 如果未設定 HTTP Proxy,SymProxy 將會使用虛擬 Proxy。 這可讓您安全地存取內部網路內的 HTTP 網站。 作為副作用,這可防止 SymProxy 直接連線到不安全的網站。
|
NoFilePointers | 根據預設,針對不存在的符號,SymProxy 會在本機快取) 中尋找要求檔案旁的 file.ptr 檔案 (。 如果找到,它會傳回 file.ptr 檔案所指定的位置。 只有在 SymStore.exe 填入本機快取時,才需要這項功能。
|
NoUncompress | 根據預設,SymProxy 會在將檔案傳回給呼叫端之前解壓縮下載的符號。 這會減少用戶端的 CPU,但會增加 I/O。
|
NoCache | 根據預設,SymProxy 會將下載的符號快取到虛擬目錄路徑所定義的本機檔案系統。
|
MissTimeout | 逾時期間,以秒為單位,其中遺漏的符號會回報為遺漏,而不會重新查詢上游符號伺服器。 遺漏與 UTC 型時間相關聯。 檔案的後續要求會立即拒絕 N 秒。 在 N 秒後檔案的第一個要求會導致重新查詢上游符號存放區。 成功時,會傳回符號檔,並刪除遺漏。 失敗時,遺漏會向前移至 UTC) 中的目前時間 (,以啟動新的逾時期間。 使用「遺漏快取」效能計數器來監視遺漏。
|
MissAgeCheck | 遺漏年齡檢查之間的期間。 系統會掃描遺漏快取,並移除超過 MissAgeTimeout 秒的記錄。 目前的統計資料會使用事件識別碼 4 儲存至事件記錄檔。
|
MissAgeTimeout | 清除每個遺漏快取專案的逾時。 此專案已清除,因為此期間內的任何要求都遭到拒絕。
|
NoLongerIndexedAuthoritive | 啟用時,NoLongerIndexed 的 file.ptr 回應將會被視為所有符號存放區中的授權單位。 使用此方法來避免對未編制檔案索引的伺服器呼叫 (不必要的) 呼叫。
|
RetryAppHang | 啟用 [重試至上游 HTTP 符號存放區]。 這相當於 SymSrv SSRVOPT_RETRY_APP_HANG (0x80000000) 選項。 透過上游 HTTP 符號存放區的 'Symbol-Agent-Status' HTTP 回應標頭收到0x80070512/HRESULT_FROM_WIN32 (ERROR_APP_HANG) 錯誤碼時,通訊端會保持開啟狀態,而且 GET 會重複到 'N' 次。 SymProxy 會針對相同的 URI 聯合多個要求。 當任何擱置的要求達到 25 秒時,SymProxy 會透過「符號代理程式狀態」HTTP 回應標頭傳回 0x80070512給呼叫端,但在背景中繼續作業。 用戶端應該在 SymSrv 中啟用SSRVOPT_RETRY_APP_HANG選項,以便支援 (額外的) 長要求, 基本上會鏈結重試上游。 SymProxy 預設回應逾時為 25 秒,讓通訊端關閉前的回應會在 (預設) 30 秒逾時,SymSrv 用於 HTTP 符號存放區。 較新版本的 SymSrv 會透過 mSec) 中的 'Symbol-Agent-Receive-Timeout' HTTP 要求標頭傳送其設定的 HTTP 逾時值 (。 如果提供此 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' 存在表示 2 層式配置。 1 層存放區的格式為:/widget.dll/ < index > /widget.dll|widget.dl_|file.ptr 2 層存放區的格式為: /wi/widget.dll/ < index > /widget.dll|widget.dl_|file.ptr
|
存取外部網路資源
當 SymSrv 與 SymProxy 搭配使用時,它會以服務的形式執行,並使用 WinHTTP API 透過 HTTP 連線存取符號。 這與針對此目的使用 WinInet 的一般行為不同。
因此,您可能需要設定 HTTP Proxy 設定,讓此服務可以存取網路資源外部。 使用下列其中一種方法來設定這些設定:
使用 Netsh 工具 (netsh.exe) 。 如需指示,請在命令提示字元視窗中輸入下列命令:
netsh winhttp -?
SymProxy 的預設行為是使用 ProxyCfg 或 Netsh 所指定的任何 HTTP Proxy。 如果未設定 HTTP Proxy,SymProxy 會使用虛擬 Proxy 來允許存取內部網路內的安全 HTTP 網站。 作為副作用,這項技術可防止 SymProxy 使用外部網際網路的直接連線。 如果您想要允許 SymProxy 直接連線到網際網路,請在登錄的符號伺服器 Proxy機碼中建立名為NoInternetProxy的REG_DWORD值。 將 NoInternetProxy 的值設定為 1,並確認 ProxyCfg 未指出任何 HTTP Proxy。