共用方式為


Microsoft SharePoint 2010 年:剖析和封裝沙箱程式碼

適當剖析和封裝要在沙箱環境中執行的解決方案讓您對於資源的使用和延展性有更大的控制權。

V。 Gnanasekaran

基於 SharePoint 2010 的企業級 Web 解決方案生成時,性能調優和測試是開發週期的一個重要部分。 如果您的解決方案中包含大量的自訂代碼,則它不只是重要的它是必不可少。

SharePoint 等為你提供了許多自訂選項,如 Web 部件、 自訂接收器、 自訂操作。 您還可以給你更好的性能、 安全、 高可用性的控制不同的執行模式的選項。 "沙箱的解決方案"是這樣一個執行模型。

您可以創建性能設定檔的生成要在使用 Visual Studio 2010 獨立探查器的沙箱環境中執行的代碼塊。 會影響性能和可擴展性的沙箱解決方案的另一個重要因素是打包和部署如 Web 部件的自訂代碼塊的方式。 你可以打包這些元件以利用跨多個伺服器,特別是在企業級伺服器場中運行的沙箱服務。

SharePoint 2010 有各種工具,説明您確定您的自訂代碼中的潛在瓶頸通過調查執行代碼 ; 所需的時間 調用外部資源,如 Web 服務、 資料庫、 資料庫查詢和多次被解雇的查詢 ; 等等。 您可以使用開發人員儀錶板來瞭解時間不同的代碼塊帶去執行。 您還可以分析與統一測井服務 (UL) 日誌執行時間。

某些約束

在沙箱的解決方案的情況下開發人員儀錶板不會提供任何有用的資訊。 此外,不會有任何有關沙箱解決方案的執行資訊可用 UL 日誌中。 沙箱元件不允許登錄到 UL 日誌資訊。 SharePoint 2010 不會説明您瞭解在沙箱環境中的自訂代碼塊的行為,因為你要取決於 Visual Studio 團隊 System2010 的性能分析功能。

性能分析的代碼時,基本上你有兩個選項:在 Visual Studio 2010 年測試的專案範本或使用 Visual Studio 團隊系統獨立事件探查器的性能。 如果你是性能測試,Visual Studio 專案範本,您應設置在同一台機器所需的所有依賴項的原始程式碼 Visual Studio 團隊系統 (VSTS) 20 終極版的安裝位置。 您將只能在開發環境中使用此。 請記住,它不會捕獲在沙箱環境中,代碼執行相關的詳細資訊,也不使用主機頭的網站集合,它正常工作。

如果您使用的 Visual Studio 團隊系統獨立事件探查器,您就不需要原始程式碼。 它與編譯輸出工作。 在上游的環境中,您可以使用它 — — 如舞臺,使用者接受度測試 (UAT),附近生產等等 — — 安裝開發工具不允許。 此方法還提供一些靈活性,所以您可以分析任何除了 W3WP.exe 進程。 這有助於您提取在沙箱環境的執行時間和記憶體中的代碼執行相關的細節。

在沙箱環境中的代碼塊的情況下第二個選項運作良好,因為它讓您靈活地設定檔所需的任何進程。 在獨立事件探查器的情況下,您有兩個選項:

  1. VSAspNetCmd.exe,為了專門分析 W3WP.exe。
  2. VSPerfCmd.Exe,您可以使用它來分析任何進程。

這些分析器生成將報告給你比開發商的儀錶板,包括"層"資訊的更多詳細的資訊。 這是有關跨機和網路的外部資源如資料庫沙箱解決方案來調用請求的資訊。

在此沙箱的解決方案的情況下,您可以使用兩個選項:執行整個代碼在沙箱的過程中,或使用完全信任代理 (混合)。 有時,為了避免沙箱過程的限制,應完全信任代理伺服器中執行的代碼。 在任一情況下,執行代碼不會發生在 W3WP.exe,因為那是基於農場、 外框解決方案和自訂代碼中會發生什麼。 因此,性能分析 W3WP.exe 不會產生任何的沙箱代碼塊的結果。

在 SPUCWorkerProcess.exe 或 SPUCWorkerProcessProxy.exe,根據您選擇的選項,會發生沙箱解決方案的代碼執行。 為了設定檔執行代碼和瞭解代碼的行為,這兩個過程分析基於所選的模型。 在沙箱處理的情況下將設定檔 SPUCWorkerProcess.exe。 在使用完全信任代理混合法) 的情況下將設定檔 SPUCWorkerProcessProxy.exe。

如"VSPerCMD.exe"用來設定檔所需的任何過程中,您可以使用它來分析的 SPUCWorkerProcess.exe 和 SPUCWorkerProcessProxy.exe 的進程。 這將生成將説明你瞭解更多的記憶體和執行時間的沙箱環境中執行代碼的詳細的資訊。

性能分析的沙箱處理代碼

在分析時沙箱處理代碼,您有兩個選項:取樣與檢測 取樣會給你更高級別的詳細資訊。 儀器儀錶是首選,當你需要深入的分析。 一般情況下,抽樣足夠常見的代碼分析要求。

下麵是循序執行設定檔所需的命令。 首先,您需要設置了所需的環境變數:

VSPerfClrEnv /globalsampleon

重新開機電腦,然後使用以下命令:

VSPerfClrEnv /globalinteractionon

"Globalsampleon"命令設置的設定檔來執行取樣。 "Globalinteractionon"命令允許探查器收集層交互資訊。 設置這些環境變數後, 重新開機電腦。

探查器不是在提供層資訊一致。 所以當層資訊不可用,您需要設置這些變數並重新啟動電腦。 這是自然的探查器當前版本的行為。

重新開機機器後下, 一步,設置事件探查器的輸出檔的名稱和取樣。

啟動各自的 Web 應用程式。 確定該應用程式的各自進程的進程 ID — — 如果那台機器運行了多個 Web 應用程式 — — 然後將應用以下代碼:

VSPerfCmd /Start:Sample /Output:<FILE_NAME>.vsp /user:everyone /CrossSession

下一步,基於執行模型選擇,標識"SPUCWorkerProcess.exe"或"SPUCWorkerProcessProxy.exe"和探查器將連接到選擇的過程:

VSPerfCmd /Attach:<PROCESS-ID>

執行該 Web 應用程式的使用者操作:

VSPerfCmd /Detach:<PROCESS-ID> VSPerfCmd /Shutdown

如果你面對問題與相關的符號,然後將那些符號連接到報告:

VSPerfReport.exe /summary:all /packsymbols <ReportName.VSP>

最後,重置環境變數:

vsperfclrenv /globaloff

您可以打開此事件探查器在 Visual Studio 2010 終極版以確定"熱路徑"並瞭解代碼行為在沙箱環境中生成的報告。 這將有助於在採取適當的糾正措施優化性能。

確保您的 Visual Studio 環境設置適當的符號打開而不會丟失資訊的報表。 在與獨立探查器與任何版本的 Visual Studio 2010 (除了極限) 一起安裝的機器,你可能會遇到錯誤。 最好僅安裝獨立監測器。

解決方案包裝

包裝沙箱解決方案時,您必須考慮層配置。 層在沙箱解決方案提供了一種方法組沙箱解決方案基於資源要求。 通過配置層以運行多個進程,您可以更多的沙箱解決方案同時運行在一個農場內。 您最多可以 20 工作進程的跨單個伺服器上的所有層。

每個進程的連接的數量應小於或等於該數位的應用程式定義域。 該連接的數目亦應小於層的"ResourceMaxValue"屬性設置為較高的值的位置。

在任何時間只能在每個應用程式定義域中運行一個沙箱解決方案。 應用程式定義域數表示沙箱解決方案,您可以在任何點載入的數。 WSP 的單個檔表示一個沙箱的解決方案。 後上傳 WSP 包,您可以看到它列出與解決方案庫中的其他沙箱解決方案。

本地模式或遠端模式中,您可以配置沙箱解決方案。 將使用遠端模式在方案中有專門在農場的伺服器執行代碼沙箱和可擴展性。

所以如果作為一個套裝軟體的一部分打包中的所有 Web 部件和自訂的代碼塊,然後在應用程式定義域中的一層將載入該套裝軟體。 其他應用程式定義域留在同一層,並不會被使用,所以跨層和伺服器不會有任何負荷分配。 這可能導致性能和可伸縮性瓶頸。

跨多個包打包的沙箱代碼塊將導致多個沙箱解決方案。 這提供了下列好處:

  1. 擁有多個的沙箱解決方案有助於提高資源監測。 這可以説明您實現的沙箱解決方案是高的資源消耗。 然後您可以查找任何機會來優化該特定的沙箱解決方案的資源消耗。 這也有助於層規劃。 有一個單一的解決方案或包中的所有沙箱代碼塊不會給你任何細節特定 Web 部件或沙箱代碼塊的資源使用。
  2. 您可以基於平均資源使用單個沙箱的解決方案,因此,它將導致伺服器資源合理利用的層配置。
  3. 部署過程會更容易。 個人 Web 部件和組可以部署或升級很容易的而不是部署為特定的 Web 部件提供更新少量的整體解決方案。

基於這些因素,是更好地進行邏輯分組跨多個解決方案包,而不是包裝,送單沙箱的解決方案中所有的 Web 部件和其他代碼塊。 適當的沙箱處理代碼塊包裝跨不同解決方案包會説明您更好地瞭解資源使用情況不同沙箱的代碼塊。

一旦你有更好的視圖到資源利用率,以確定可能的領域中的不同部分的代碼塊 (方面的性能) 的改善,執行代碼優化活動可以使用性能分析的運動。 您也可以提高性能、 可擴展性和有效的資源使用情況。

V. Gnanasekaran

V。 Gnanasekaran 有超過 14 年的經驗作為 TOGAF 9 認證企業架構師和微軟諮詢服務印度,他為客戶提供建築諮詢服務的一部分。他當前的重點領域包括 SharePoint、 SQL 伺服器 OLAP/OLTP 和 Windows Azure。他已在包括各種期刊發表技術文章 建築雜誌 和 CodeProject。在他的博客 gnanasekaran.com

相關內容