Microsoft Office Project Server 2007 佇列系統

更新日期: 2009年5月

 

上次修改主題的時間: 2015-02-27

本文內容:

  • 概觀

  • 佇列程序

  • 佇列架構

  • 專案與時程表佇列

  • 佇列部署

  • 佇列群組

  • 佇列狀態

  • 佇列管理

  • 管理佇列

本文說明 Microsoft Office Project Server 2007 佇列系統,這是本版 Project Server 的重要新功能。本文提供佇列系統、佇列程序和架構、佇列工作群組方法、佇列工作可有的狀態,以及如何透過 Microsoft Office Project Web Access 使用者介面管理佇列的概觀。

概觀

佇列是當服務要求的數目大於最佳服務產能時,必定要有的等待行列。發生此種情況時,「企業專案管理系統」會有數個執行個體。例如:

  • 小型公司全體 500 名員工,幾乎都是在星期五工作日結束時送出其時程表。

  • 幾乎所有的專案經理,都是在小組進度會議開始前幾小時才發佈專案。

Office Project Server 2007 佇列系統旨在以正常穩定的方式處理突然變更的要求。Office Project Server 2007 佇列系統接受所有使用者的輸入,以 Microsoft SQL Server 記錄要求項目,然後根據先到先處理的原則,以非同步方式處理資料。佇列可確保當要求突然增加時,Office Project Server 2007 EPM 解決方案不會停止運作。

Office Project Server 2007 系統中的所有重大作業,幾乎都要透過 Office Project Server 2007 佇列系統。這些包括:

  • 專案儲存

  • 專案發佈

  • 時程表儲存

  • 時程表送出

  • 專案備份/復原

  • 報告資料服務作業

  • Cube 建立服務作業

  • 伺服器端排程 (及節點一致性處理)

Project Server 佇列系統提供以下優點:

  • 可靠性

    1. 資料完整性:定義完善的通訊協定會將所有工作都儲存在佇列中。工作若只儲存一半,即不予處理。此外,所有工作都會儲存在 SQL Server 中 (而不是檔案系統),因此得以利用 SQL Server 的交易。

    2. 依序傳送:如果 Project Professional 使用者先按一下 [儲存] 再按 [發佈],則 Project 佇列系統可確保先處理「儲存」工作,再接著處理「發佈」工作。

    3. 容錯:佇列中的失敗工作可重試。此外,當有多個佇列 NT 服務執行個體正在執行時,若其中之一停止回應,其他的執行個體會自動接下額外的負載 (此程序稱為「透明容錯移轉」)。

  • 延展性

    1. 多執行緒處理:Office Project Server 2007 佇列系統可同時處理多項工作。例如,同時處理「專案 1 儲存」、「專案 2 發佈」及 Cube 建立工作。

    2. 您只要多新增幾部中間層伺服器,即可將負載處理得更好。每部中間層伺服器都具備 Project 佇列服務,且會自動平衡負載。

    3. 佇列的工作數目僅受限於 SQL Server 的規模限制。

  • 管理性

佇列程序

下圖說明佇列程序:

Project Server 2007 佇列程序

  1. 使用者從用戶端應用程式提出伺服器要求 (例如,從 Project Professional 發佈專案)。使用者傳遞工作識別碼 (可追蹤要求的唯一識別碼) 當成要求的一部分。

  2. 專案 Web 服務會接受要求,並將其排入佇列。

  3. 向使用者發行工作識別碼作為通知。

  4. 使用者可透過此發行的工作識別碼執行查詢,以檢查此要求的狀態。

  5. Office Project Server 2007 佇列系統會將該要求的狀態傳回給使用者。

佇列架構

Project Server 佇列系統邏輯架構是由下列四個模組所組成。

  • 工作儲存

  • 工作輪詢

  • 工作處理

  • 工作狀態檢查和管理

提出 Project Server 佇列服務要求時 (例如新增或處理工作或擷取狀態),這些模組會合作無間完成所要求的工作。本節會詳細說明此程序。

佇列模組

佇列 NT 服務會安裝在每部 Project Server 應用程式伺服器電腦上,作為佈建的一部分。該服務會為伺服器陣列中所定義的每個共用服務提供者 (SSP),各啟動一個「佇列工作者處理序」。佇列工作者處理序會服務所有與其 SSP 相關的 Project Web Access (PWA) 執行個體,並以「SSP 管理員」身分執行。進行本節其餘作業時,請記得此部署模型。如需詳細資訊,請參閱本文稍後的<佇列部署>。

Project Server 2007 佇列 NT 服務

Project Server 佇列系統是由下列四個模組所組成:

  1. 工作儲存:佇列工作會儲存在草稿與已發佈的 Project Server 資料庫中。如此一來,即可將工作當成一般 Project Server 資料庫備份與復原作業的一部分來備份及還原。

    工作儲存

  2. 工作輪詢:工作輪詢執行緒會定期輪詢工作儲存,以檢查有無新的工作。輪詢間隔是由管理員在 Project Web Access 佇列管理頁面上進行設定。

    工作輪詢

    1. 佇列工作者處理序會為其所服務的每個 PWA 執行個體啟動工作輪詢執行緒。工作輪詢執行緒會在「佇列工作者處理序」程序內以「佇列工作者處理序」身分執行。

    2. 工作輪詢執行緒有兩個主要屬性:

      屬性 描述

      類型

      指定的工作輪詢執行緒可以是「專案工作輪詢執行緒」(尋找與專案相關的工作) 或「時程表工作輪詢執行緒」(尋找與時程表相關的工作)。

      Project Web Access 執行個體

      每個工作輪詢執行緒都會尋找源自特定 Project Web Access 執行個體的工作。

  3. 工作處理:工作輪詢執行序會針對每項找到的工作衍生一個工作處理執行序。管理員可設定工作處理執行緒的數目上限。請注意,工作處理執行緒位在「佇列 NT 服務」程序內,並以「佇列 NT 服務」身分執行。

    Project Server 2007 - 佇列工作處理

  4. 工作狀態檢查和管理:這是使用者看到的 Project Server 佇列模組。

    工作狀態檢查和管理

    1. Project Web Access 管理佇列頁面:管理員使用此頁面查看佇列中任何工作的狀態。他們也可以取消或重試失敗的工作。這是 PWA 功能的一部分,您不必另行下載特殊工具。

    2. Project Web Access 佇列設定頁面:管理員可檢視或變更佇列的設定,例如輪詢間隔及工作處理執行緒的數目上限。這是 PWA 功能的一部分,您不必另行下載特殊工具。

    3. Project Web Access 我的佇列工作頁面:任何使用者都可使用此介面檢查工作狀態。這是 PWA 功能的一部分,您不必另行下載特殊工具。

    4. 佇列狀態 PSI:軟體開發人員可使用這些 API 取得任何佇列工作的狀態。有數個強大的篩選器可縮小搜尋範圍。

全體合作的方式

當系統分派到工作要求時 (例如新增工作、處理工作及擷取工作狀態),Project Server 佇列系統各模組必須互動且合作無間。

新增工作

有多種方法可將工作新增至佇列。例如,專案經理可儲存 Project Professional 專案、小組成員可送出時程表,或協力廠商應用程式可發佈專案。前述任一動作都會呼叫 Project Server Interface (PSI) 的元素,進而將適當的工作新增至佇列。

新增工作--架構

工作處理

工作處理發生在不同的階段並涉及不同模組之間的互動:

  1. 啟動佇列工作者處理序:佇列 NT 服務啟動時,會為伺服器陣列中所定義的每個共用服務提供者,各啟動一個佇列工作者處理序。佇列 NT 服務應隨時都在執行,Project 佇列系統才能運作。

  2. 啟動工作輪詢執行緒:佇列工作者處理序啟動時,會啟動 Project Web Access 執行個體特有的工作輪詢執行緒。

  3. 選取新工作:輪詢執行緒會在專案資料庫中尋找新工作。

  4. 建立工作處理執行緒:如果有新工作,即會建立工作處理執行緒。

  5. 寫入狀態:工作處理執行緒完成之後,工作的狀態 (成功或失敗) 即會寫回資料庫。

    Project Server 2007 工作程序佇列

擷取狀態

有多種方法可檢查工作狀態。管理員可使用 Project Web Access 佇列管理頁面、小組成員可使用 [我的佇列工作] 頁面,或軟體開發人員可以程式設計的方式透過佇列 PSI 方法取得狀態。如需 PSI 方法的詳細資訊,請參閱 MSDN Library Online 的Project 2007 SDK 文件 (英文) (https://msdn.microsoft.com/zh-tw/library/bb187390.aspx) 。

Project Server 2007 工作狀態檢查

專案與時程表佇列

Office Project Server 2007 佇列系統是由下列兩個不同的佇列所組成:

  1. 專案佇列   主要用於與專案相關的訊息,例如儲存、發佈、報告及 Cube 建立,但其他類型的訊息也會傳送到此佇列。其表格和預存程序會儲存在 Office Project Server 2007 草稿資料庫中。

  2. 時程表佇列   主要用於與時程表相關的訊息,例如時程表儲存及時程表送出,但其他類型的訊息也會傳送到此佇列。其表格和預存程序會儲存在 Office Project Server 2007 發佈資料庫中。

這兩個佇列的設計方法相同,但其工作位於不同的資料庫中。擁有兩種佇列類型的優點包括:

  • 效能:將佇列工作資料儲存在相同的資料庫中作為核心資料,可在工作處理期間,省下佇列必須跨資料庫呼叫的昂貴成本。舉例來說:發生「時程表送出」工作時,使用者輸入的資料 (例如工作時數) 會封裝為已送出佇列工作的一部分,放入 SQL Server 工作儲存區。此外,已有現成的時程表資訊 (持續時間、名稱等),而此資訊可在「已發佈的」資料庫中取得。若要處理「時程表送出」工作,必須有這兩組資料。這兩組資料若位於同一資料庫中,即可提升效能。這也是為什麼時程表佇列工作儲存在「已發佈的」資料庫 (所有時程表核心資料所在位置),而專案佇列工作儲存在「草稿」資料庫 (大多數的專案核心資料所在位置)。

  • 微調:專案與時程表佇列的每項佇列設定皆可分別指定。這方便管理員靈活設定。例如,如果客戶主要將 Office Project Server 2007 用於時程表,專案又非常少;則專案佇列的輪詢間隔可設為 1 分鐘,而時程表佇列的輪詢間隔可設為 10 秒。

    Note附註:
    輪詢間隔指定佇列服務檢查兩種佇列之一是否有新工作的頻率。這項設定可在 Project Web Access 佇列設定頁面中指定。

專案與時程表佇列的使用方式

下圖顯示 Project Server 佇列系統中的模組如何使用專案與時程表佇列。

Project Server 2007 佇列架構

  1. 啟動工作輪詢執行緒:針對每一個佇列所服務的 Project Web Access 執行個體 (佇列可服務多個 Project Web Access 執行個體),各啟動一對輪詢執行緒:其中一個執行緒服務專案佇列,另一個執行緒服務時程表佇列。兩個執行緒都位於「佇列工作者處理序」程序空間內,並以「佇列工作者處理序」身分執行 (亦即共用服務提供者管理員身分)。

  2. 工作儲存:如前所述,與專案相關的工作 (專案儲存、發佈、報告、Cube 建立等) 會儲存在「草稿」資料庫中。而與時程表相關的工作 (時程表儲存、時程表送出等) 則儲存在「已發佈的」資料庫中。

  3. 工作處理:此處無任何變更。當「工作輪詢執行緒」發現新工作時,即會建立新的工作處理執行緒。請注意,工作處理執行緒仍位於「佇列工作者處理序」程序空間內,並以「佇列工作者處理序」身分執行 (亦即共用服務提供者管理員身分)。

    狀態檢查模組並無任何變更,這些模組只會檢查工作狀態,而不管工作所屬佇列為何。佇列管理一概逐佇列完成,管理員必須在 Project Web Access 佇列管理頁面中,選取要變更設定的佇列 (專案或時程表)。

佇列部署

為瞭解 Project Server 佇列系統的部署方式,您必須先瞭解 Office Project Server 2007 的一般部署方式。本節提供簡要的部署程序概觀。如需詳細資訊,請參閱<Deploy Project Server 2007 to a server farm environment>。

即使在閱讀前文各節之後,讀者心中可能仍存在幾個基本問題:

  1. 最初該如何建立佇列 NT 服務?

  2. 如何開始使用佇列 NT 服務;例如,該服務如何尋找 Project Server 草稿和已發佈的資料庫位置?

  3. 佈建多個 Project Web Access 執行個體 (建立更多 Project 資料庫) 時會產生什麼結果?

  4. 佈建多個 SSP (建立更多佇列 NT 服務) 時會產生什麼結果?

本節會討論這些問題。

如何在 Project Server 2007 安裝期間部署佇列 NT 服務

本節以簡短的 Office Project Server 2007 部署概要,說明如何在環境中部署佇列。

  1. 準備電腦:決定部署的實體架構。在本例中,我們確定使用兩部電腦執行 Web 應用程式 (處理網頁):其中一部電腦用於中間層作業 (專案儲存、專案發佈等),另一部電腦用於資料庫。

    準備電腦

  2. 建立 Project Server 伺服器陣列:當您在任何電腦上嘗試安裝 Project Server 時,即會提示您建立伺服器陣列 (或加入現有的伺服器陣列)。您可以將 Project Server 伺服器陣列大致想像成一種安裝的概念性表示:伺服器陣列基礎結構會將正確的物件部署在正確的位置。建立伺服器陣列也會建立伺服器陣列 SharePoint 管理中心網站,這是您控制所有伺服器陣列作業的集中管理位置。伺服器陣列包含一個伺服器陣列設定資料庫,掌管伺服器陣列中所有伺服器的相關設定資訊。

    建立伺服器陣列

  3. 安裝二進位檔及加入伺服器陣列:下一個步驟是在所有電腦上安裝 Office Project Server 2007 並加入 Project Server 伺服器陣列。在此程序中,您會為安裝執行所在的電腦指定一個角色,「前端網頁伺服器」或「應用程式伺服器」(中間層電腦) 皆可。

    安裝二進位檔並加入伺服陣列

  4. 在伺服器陣列中佈建共用服務提供者 (SSP):在伺服器陣列中佈建 SSP 時,會在每部具有「應用程式伺服器」角色的電腦上安裝 Project Server 共用服務的必要服務/元件。所建立的項目包括佇列 NT 服務、事件 NT 服務及 PSI Web 應用程式等。下圖的白色圖說文字顯示伺服器陣列的邏輯設定。在此例中,會在伺服器陣列中建立 SSP。

    佈建共用服務提供者

    相關注意事項:

    1. 伺服器陣列基礎結構會將必要的元件安裝在每一部中間層電腦上。如果有多部中間層伺服器,這些伺服器會自動分擔負載。

    2. 這些 NT 服務每一項都是以共用服務提供者應用程式集區的身分執行。無法透過 Windows Server 2003 之 [控制台] 的 [服務] 選項以手動方式管理。SharePoint 計時器服務會以伺服器陣列設定資料庫的伺服器陣列管理員帳戶,定期同步處理 NT 服務認證。

    NT 服務此時不執行任何作業,因為沒有需要提供服務的 Project Web Access 網站。

  5. 佈建 Project Web Access:只要瀏覽 SSP 管理網站並建立 Project Web Access 執行個體,即可完成此作業。完成此步驟之後,即會建立 Project Web Access 執行個體的必要服務/元件。佈建程序也會通知佇列與事件服務現在有需要服務的 Project Web Access 網站。下圖的白色圖說文字顯示伺服器陣列的邏輯設定。在本例中,會在伺服器陣列中建立新的 Project Web Access 執行個體 (例如 PWA1),並連結到上一個步驟所建立的 SSP。

    佈建 Project Web Access

    相關注意事項:

    1. 每部前端網頁伺服器電腦上都要建立 Windows SharePoint Services 網站集合及相關應用程式集區。

    2. 要建立四個 Project Server 資料庫。

    3. 設定資料庫中會建立登錄 PWA 網站、SSP 及資料庫間關係的項目。

  6. 多佈建一個 Project Web Access 執行個體:在客戶案例中,一般會在伺服器陣列中建立多個 PWA 執行個體 (例如服務 http://project20007/sales 及 http://project2007/marketing)。發生這種情況時,會建立新的 Project Server 資料庫集合以及更多的 PWA Windows Sharepoint Services 網站集合與應用程式集區。下圖的白色圖說文字顯示伺服器陣列的邏輯設定。在本例中,會在伺服器陣列中建立新的 PWA 執行個體 (例如 PWA2),並連結到 SSP。請注意,PWA2 執行個體會建立新的 Project Server 資料庫集合。現在佇列與事件 NT 服務會開始服務所有連接至 SSP 的 PWA 網站。在本例中,這些服務會開始為 PWA1 及 PWA2 提供服務。

    佈建另一個 Project Web Access 執行個體

多部 Project Server 應用程式伺服器上的佇列 NT 服務

佇列 NT 服務係建立在伺服器陣列中的所有 Project Server 應用程式伺服器上 (亦稱之為「中間層伺服器」)。例如,如果您有兩部 Project Server 應用程式伺服器,只要在 Project Server 伺服器陣列中佈建新的 SSP,即會在這些電腦上建立新的佇列 NT 服務。請特別注意,佇列 NT 服務會服務連接到其父項 SSP 的所有 PWA 執行個體。

佇列服務內容

如前所述,在 Project Server 伺服器陣列中佈建 SSP 時,即會建立佇列 NT 服務。當您檢視佇列 NT 服務的中間層電腦內容時,必須瞭解其中部分內容的決定方式。

佇列服務內容

  • 佇列服務名稱:服務名稱為 ProjectQueueService。不論伺服器陣列中有多少 SSP,Project Server 應用程式伺服器上一律只有一項佇列 NT 服務。

  • 佇列啟動類型:啟動類型是自動的,因為佇列 NT 服務應一直執行。

  • 佇列 NT 服務登入帳戶:計時器服務帳戶會設為佇列 NT 服務的登入帳戶 (這是您在建立伺服器陣列時所使用的帳戶)。

佇列 NT 服務如何啟動載入與開始服務 Project Web Access 執行個體:佇列會以計時器服務帳戶身分執行,且可以存取伺服器陣列設定資料庫。啟動時,佇列 NT 服務會查詢設定資料庫,並取得伺服器陣列中所佈建之全部 SSP 的清單。然後針對每一個 SSP 啟動佇列工作者處理序。每個佇列工作者處理序會尋找與 SSP 相關之 PWA 執行個體的清單,然後針對每一個 PWA 執行個體各啟動一對輪詢執行緒。

何時需要重新啟動佇列 NT 服務:理論上根本不需要。佇列 NT 服務會持續偵聽伺服器陣列設定的變更;若有變更,即會自動適應變更 (而不必重新啟動 NT 服務)。

您會在 [Windows 工作管理員] 中看到的處理序:如果開啟 [Windows 工作管理員],即會看到數個同名的處理序:“Microsoft.Office.Project.Server.Queuing.exe”。其中之一會以計時器服務帳戶的身分執行,這代表佇列 NT 服務本身。然後,在伺服器陣列中會有與 SSP 數目相同的 Microsoft.Office.Project.Server.Queuing.exe 處理序,每一個都是以相應的 SSP 管理員帳戶身分執行。這些處理序代表佇列工作者處理序。因此,"Microsoft.Office.Project.Server.Queuing.exe" 處理序的總數等於 SSP 數目加上一個供計時器服務帳戶使用者。

不同拓撲中的佇列部署

本節說明如何在可有多個 PWA 執行個體以及多個共用服務提供者的不同拓撲中部署佇列。

多個 PWA 的佇列啟動/服務

佇列啟動時,會先連絡伺服器陣列設定資料庫,要求所有應服務的 Project Web Access 執行個體。佇列會使用共用服務提供者 GUID 驗明自己的身分,這是用於佇列 NT 服務的啟動參數 (如需詳細資訊,請參閱<佇列部署>一節)。

Project Server 2007 雙網頁佇列

  1. 佇列 NT 服務會連絡伺服器陣列設定資料庫,要求在伺服器陣列中所定義之全部 SSP 的相關資訊。

  2. 佇列 NT 服務會為每一個 SSP 啟動「佇列工作者處理序」,執行於相對應的 SSP 管理帳戶下。

  3. 佇列 NT 服務會為每一個 SSP 取得一份相關聯之 PWA 網站的清單。

  4. 佇列 NT 服務會為每一個 PWA 網站取得 PWA 資料庫的連線資訊。

  5. 佇列 NT 服務會針對每一個 PWA 執行個體,各啟動一對工作輪詢執行緒。

  6. 輪詢執行緒會輪詢有無新的工作。

單一 SSP、多個 PWA 環境中的佇列部署

這是在單一 SSP 環境中,SSP 佈建兩個 Project Web Access 執行個體的佇列架構代表。

Project Server 2007 佇列系統單一 SSP

  1. 佇列 NT 服務會連絡伺服器陣列設定資料庫,要求在伺服器陣列中所定義之全部 SSP 的相關資訊。

  2. 佇列 NT 服務會為每一個 SSP 啟動「佇列工作者處理序」,執行於相對應的 SSP 管理帳戶下。

  3. 佇列 NT 服務會為每一個 SSP 取得一份相關聯之 PWA 網站的清單。

  4. 佇列 NT 服務會為每一個 PWA 網站取得 PWA 資料庫的連線資訊。

  5. 佇列 NT 服務會針對每一個 PWA 執行個體,各啟動一對工作輪詢執行緒。

  6. 輪詢執行緒會輪詢有無新的工作。

  7. 發現新工作時,工作輪詢執行緒即會衍生新的工作處理執行緒。

雙 SSP 環境中的佇列部署

這是在雙 SSP 環境中,每個 SSP 僅佈建單一 Project Web Access 執行個體的佇列架構代表。

Project Server 訊息佇列

  1. 佇列 NT 服務會連絡伺服器陣列設定資料庫,要求在伺服器陣列中所定義之全部 SSP 的相關資訊。

  2. 佇列 NT 服務會為每一個 SSP 啟動「佇列工作者處理序」,執行於相對應的 SSP 管理帳戶下。

  3. 佇列 NT 服務會為每一個 SSP 取得一份相關聯之 PWA 網站的清單。

  4. 佇列 NT 服務會為每一個 PWA 網站取得 PWA 資料庫的連線資訊。

  5. 佇列 NT 服務會針對每一個 PWA 執行個體,各啟動一對工作輪詢執行緒。

  6. 輪詢執行緒會輪詢有無新的工作。

  7. 發現新工作時,工作輪詢執行緒即會衍生新的工作處理執行緒。

佇列群組

已佇列資料有三種不同的群組層級:

  1. **工作   **工作是由 Project Server 所執行的可追蹤工作封包 (例如,專案儲存、專案發佈、時程表送出)。有些工作並非明確由使用者啟動 (例如,電子郵件通知、報表資料同步處理)。「工作」是使用工作識別碼追蹤佇列的層級。

  2. **相關聯的工作群組   **相關聯的工作群組是 Project Server 內部規則所規定的工作分類。相關聯工作群組內的工作一律會依序一同處理 (但有些例外)。在下例中,「專案 1」是以 Project Professional 編輯與儲存後再存回。接著,其他使用者在取出「專案 1」後又予以發佈。發佈「專案 1」會觸發「報告」,因此也必須將「報告」工作新增至佇列。Project Server 組合一組相關聯群組,其中包含四項與「專案 1」相關的工作。由於 Project Server 內部規則規定工作間有相依性,因此 Project Server 會接著嘗試依序處理工作。此處的相依性為必須先儲存「專案 1」,才能執行「專案 1」發佈與報告資料庫更新。此外,如果交互關聯中有任一工作失敗,相關聯群組的後續其他工作都會被封鎖。例如,如果「儲存專案 1」工作 (工作識別碼 12) 失敗,則應封鎖「存回專案 1」工作 (工作識別碼 13)。如果執行「存回專案 1」工作,則會導致問題。其他人可以接著取出「專案 1」(可能因儲存失敗而導致狀態不一致),並嘗試予以修改。

  3. **子工作   **每項工作皆可再分割為較小的區段,稱為子工作。如果某項工作非常大 (例如儲存 10 MB 的專案),其可分割為多項子工作。子工作不會向 PSI 或 Project Web Access 使用者揭露。

    不同的佇列分組層級

已送出工作之間的父/子關係

您必須瞭解,需要進一步處理的已送出工作之間會存有父/子關係。例如,如果使用者發佈「專案 1」,即會產生「專案 1」的報告要求,也會產生關於「專案 1」的通知要求。請注意,「通知專案 1」一律會產生,但由於「報告專案 1」只有在「發佈專案 1」成功時才會產生,因此發佈工作若失敗,則不會產生「報告專案 1」工作。

工作之間的父/子關聯性

同樣地,子項工作可能會失敗,但不影響父項工作。例如,「通知專案 1」若失敗,由於發生在前,因此不會對「發佈專案 1」有任何影響。請特別注意,雖然使用者知道「專案 1」的發佈是透過佇列處理,但可能不知道子項工作已失敗。若要確認已進入佇列之父項工作所衍生的子項工作及狀態,您可透過 Project Web Access 的 [我的佇列工作] 頁面執行此作業。管理員可使用 [佇列管理] UI 查看佇列的所有工作。

Note附註:
本文的<佇列管理>一節會說明 Project Web Access 我的佇列工作頁面及佇列管理頁面。

佇列狀態

當工作送出到佇列時,可轉換成多種狀態。下表說明每一種狀態:

狀態 描述

加入佇列中

將工作放入佇列。發行工作識別碼。

等待處理中

工作位於佇列中等待處理。

處理中

正在處理工作。

成功

工作已成功完成處理。這是最終狀態,工作狀態不會再改變。

已封鎖

已封鎖工作,因為在同一相關聯群組中,發現此工作之前有其他工作失敗。會重試或取消。

失敗但不封鎖相互關聯

工作失敗,但未封鎖其群組中的任何其他工作。這是最終狀態,工作狀態不會再改變。

失敗並封鎖相互關聯

工作失敗,且會封鎖一或多項相依工作。

忽略以進行最佳化

已略過工作,因為在群組內發現此工作之後有重複的工作。例如,專案經理在處理專案時,可能會依序嘗試下列作業:

  1. 儲存專案 1

  2. 發佈專案 1

  3. 變更專案 1 的工作

  4. 發佈專案 1

  5. 變更專案 1 的開始日期

  6. 發佈專案 1

專案一連三次的儲存作業都會予以處理。但三次的發佈嘗試卻不必全部處理。只要處理最後一次的發佈工作,即會產生與三次發佈工作都處理的相同結果。為進行最佳化,請略過前兩次的發佈嘗試。

已取消

已取消工作。除最終兩個狀態外 ([成功]、[失敗但不封鎖相互關聯]),任何狀態的工作皆可取消。

佇列狀態的變更

當工作進入佇列進行處理時,您必須瞭解佇列狀態可能發生的變更。下列流程圖說明每種狀態的可能過程。

Project Server 2007 佇列系統 - 編輯狀態

狀態 下一個可能的狀態

加入佇列中

  • 等待處理中

  • 已取消

等待處理中

  • 處理中

  • 已取消

  • 已封鎖

  • 忽略以進行最佳化

處理中

  • 成功

  • 失敗但不封鎖相互關聯

  • 失敗並封鎖相互關聯

  • 已取消

成功

  • 結束

已封鎖

  • 處理中

  • 已取消

失敗但不封鎖相互關聯

  • 結束

失敗並封鎖相互關聯

  • 已取消

  • 處理中

忽略以進行最佳化

  • 因為工作失敗而封鎖

  • 已取消

  • 成功

  • 失敗但不封鎖相互關聯

  • 失敗並封鎖相互關聯

  • 處理中

已取消

  • 結束

佇列管理

Office Project Server 2007 的大多數關鍵性作業都要透過佇列。因此,瞭解與管理佇列對於 Microsoft Office Enterprise Project Management (EPM) 解決方案 安裝的順利運作非常重要。例如,下列相關主題有助於您將佇列管理得更好:

  • 我的專案發佈很花時間。

  • 佇列管理頁面載入很花時間,而且工作數目顯示為 100,000。

  • 我的主管詢問我如何確認採購新的中間層 Office Project Server 2007 伺服器 (應用程式伺服器) 實際上會改善效能。

佇列管理的執行方式包括:

  • Project Web Access 佇列管理頁面

  • 我的佇列工作頁面

  • 效能計數器

  • 佇列清除

Project Web Access 佇列管理頁面

您可透過 Office Project Web Access 的 [佇列管理] 頁面執行佇列管理。這類似任何一般印表機的中央 [顯示所有作業] 畫面,您可在此查看佇列中的所有列印工作,並在必要時解決問題。透過 Project Web Access 的 [伺服器設定] 頁面即可存取 Project Web Access 佇列管理頁面。

您可以從 [管理佇列] 頁面執行下列作業:

  • 查看佇列中的所有工作狀態。

  • 取消或重試失敗的工作。

    Note附註:
    如需佇列狀態的詳細資訊,請參閱<佇列狀態>一節。
    Note附註:
    若要檢視佇列管理的相關使用者介面資訊,請參閱本文的<管理佇列>一節。

我的佇列工作頁面

[我的佇列工作] 頁面提供自行管理使用者介面 (類似任何個人電腦上的「列印多工緩衝處理器」),您可在此查看已進入佇列之專屬特定工作的狀態。Project Web Access 使用者可從 Project Web Access 首頁,透過 [快速啟動] 的 [個人設定] 連結存取 [我的佇列工作] 頁面。

如果使用者要檢視已進入佇列之所有工作的相關資訊,只要移至 Project Web Access 的 [我的佇列工作] 頁面即可執行此作業。[我的佇列工作] 頁面會顯示使用者輸入佇列之工作的下列相關資訊:

  • 佇列進入時間

  • 佇列完成時間

  • 工作名稱

  • 工作類型

  • 工作狀態

  • 完成百分比

  • 佇列位置

  • 佇列類型

  • 錯誤

此外,[我的佇列工作] 頁面也允許使用者篩選其所有佇列工作,篩選依據包括:

  • 進行中及失敗的工作

  • 所有工作

  • 上週所有工作

  • 上週成功的工作

效能計數器

有許多專門針對佇列的效能計數器,管理員可用來測試您目前 Office Project Server 2007 系統效能的基準點。這些效能計數器極利於判斷目前的設定是否符合目標,或是否需要調整其他資源,例如其他伺服器。

可以使用的計數器中,某些特別與工作有關,例如:

  • 佇列中任何工作的平均等待時間

  • 發佈工作的平均處理時間

  • 失敗工作的百分比

  • 平均等待時間

其他計數器則通常與佇列有關,例如:

  • 平均佇列深度

  • SQL 重試次數 %

  • 每小時 SQL 呼叫次數

  • 發佈工作的平均處理時間

佇列清除

使用 Project Server 系統時,工作仍會繼續進入佇列進行處理。佇列系統會維持每項完成工作的狀態及其他中繼資料,以供稍後判斷其狀態。這些工作與時俱增,因此可能會開始影響系統效能,特別是工作狀態查詢。為處理此種情況,佇列系統有內建的清除機制,可定期刪除佇列中的工作。刪除作業的主要影響,在於您無法透過 PSI 或 [佇列管理] 頁面判斷已刪除工作的狀態。

在 Project Web Access 佇列設定頁面上,有數個設定參數可控制此清除機制:

  • 清除間隔 – 決定應執行清除的頻率。預設值為 24 小時。

  • 成功工作的清除存留期限制 – 決定成功工作應清除的頻率。預設值為 24 小時。

  • 未成功工作的清除存留期限制 – 決定已完成但非成功狀態工作應清除的頻率 (例如,失敗但不封鎖相互關聯的工作)。預設值為 168 小時。

Note附註:
如需這些參數的詳細資訊,請參閱本文稍後的<佇列設定>一節。

管理佇列

透過 Project Web Access 的 [伺服器設定] 頁面即可執行佇列管理。在 [伺服器設定] 頁面的 [佇列] 區段中,有兩個選項可管理佇列。

  1. 管理佇列   您可使用此頁面檢視佇列中的工作。您可以使用設定選項篩選工作,只查看您有興趣檢視的工作。您也可以透過此頁面重試或取消一或多項工作。

  2. 佇列設定   您可以設定控制如何從專案與時程表佇列提取及處理工作的設定選項。套用這些設定不必重新啟動佇列 NT 服務。

管理佇列

本節說明在 Project Web Access 伺服器設定頁面中選取 [佇列] 區段中的 [管理佇列],即可使用的佇列篩選選項。所選佇列選項的結果也會顯示在此頁面上。

篩選類型

此篩選決定工作在 [工作格線] 區段中顯示的順序。可用選項包括:

  • 依狀態

  • 依工作

  • 依專案

  • 依識別碼

工作歷程記錄

此參數可讓您選取要在 [工作格線] 中顯示之工作的日期範圍。使用 [從] 與 [至] 欄位選取開始與結束日期。

您可以使用 [工作數的最大值] 欄位限制指定日期範圍內所顯示的工作數目。如果選取的日期範圍包含的工作有太多必須在 [工作格線] 中顯示,則會需要很長的時間載入 [管理佇列] 頁面。[工作數的最大值] 欄位可讓您限制要顯示的工作數目。預設設定為 500。

工作類型

此區段可讓您選取要出現在 [工作格線] 中的工作類型 (例如,專案發佈、時程表送出或資源計劃存回)。根據預設,所有工作類型都會列在 [選定工作] 清單中。

工作完成狀態

此區段可讓您選取要出現在 [工作格線] 中的工作完成狀態。根據預設,除「成功」以外,所有的工作完成狀態都會出現在 [選定工作狀態] 清單中。這表示已成功完成的工作,不會出現在 [工作格線] 中。

選擇欄

此區段可讓您選取要出現在 [工作格線] 區段中的欄。

進階選項

此區段可讓您指定適合取消作業的特殊作業。這些選項可讓您:

  • 取消排入佇列的工作

  • 取消相互關聯的後續工作

工作格線

此區段可讓您檢視符合 [管理佇列] 頁面所列準則的工作。此區段內的選項可讓您選取一項工作或一組工作,並在適用時套用下列選項:

  • 重試工作

  • 取消工作

    Note附註:
    您必須手動重新整理 [檢視/選取] 工作清單,才能更新頁面。您也可以透過此區段提供的 [重新整理] 按鈕執行此作業。

佇列設定

本節說明在 Project Web Access 伺服器設定頁面中選取 [佇列] 區段中的 [佇列設定],即可使用的佇列設定選項。

設定佇列設定時,請特別注意下列事項:

  • 佇列設定係按每個 Project Server 執行個體設定。

  • 佇列設定係分別按每種佇列類型 (專案或時程表) 設定。

  • 佇列 NT 服務不必重新啟動,變更即可生效。

  • 如果有多項佇列 NT 服務為此 Project Web Access 執行個體提供服務 (例如在負載平衡環境中),則所有佇列服務都會依設定重新整理。

    Note附註:
    在此頁面中選取您的設定選項之後,請務必使用此頁面的 [儲存] 按鈕儲存組態設定。

佇列類型

此區段可讓您指定要套用設定的佇列類型 (專案或時程表)。

工作處理器執行緒數目的最大值

此區段可讓您指定可同時執行之工作處理器執行緒數目的最大值。有效範圍介於 1 到 20,預設值為 4。

輪詢間隔

此區段可讓您指定佇列 NT 服務輪詢專案或時程表資料庫 (視所選工作類型而定) 有無新工作的時間間隔 (毫秒) 。有效範圍是 500 到 300000,預設值為 1000。

重試間隔

此區段可讓您設定因 SQL 相關問題 (例如 SQL 死結) 而失敗的工作之重試間的時間長度 (毫秒)。有效範圍是 0 (立即重試) 到 300000,預設值為 1000。

重試限制

此區段可讓您設定對失敗輪詢查詢的重試限制。Project Server 佇列系統會定期輪詢資料庫,以擷取需要處理的工作。如果此查詢因 SQL 相關原因而失敗,系統在一段時間之後,會嘗試再次輪詢資料庫。

SQL 重試間隔

佇列會定期輪詢資料庫有無需要處理的工作。如果查詢失敗,此區段可讓您設定重試查詢前的時間長度 (毫秒)。有效範圍是 0 (立即重試) 到 60000,預設值為 1000。

SQL 重試限制

佇列會定期輪詢資料庫有無需要處理的工作。如果查詢失敗,此區段可讓您設定重試查詢的次數。有效範圍是 0 (不重試) 到 100,預設值為 5。

SQL 逾時

佇列呼叫 SQL 以擷取及執行工作。此區段可讓您設定這些呼叫的逾時值 (秒)。如果有任何工作因 SQL 逾時錯誤而失敗,您可增加此設定的值,再重試工作。有效範圍是 19 到 86400 (一天),預設值為 30。

清除間隔

此區段可讓您設定佇列清除工作執行的頻率 (小時)。有效範圍是 1 到 100000,預設值為 24 (一天)。

清除間隔位移

此區段可讓您設定佇列清除工作每天執行的時間。此值的設定方式是輸入上午 12:00 之後的分鐘數,此即為佇列清除工作執行的時間。有效範圍是 0 (上午 12:00) 到 1439 (下午 11:59),預設值為 0。

成功工作的清除存留期限制

此區段可讓您設定存留期的臨界值 (小時),到達此臨界值即會在佇列清除工作執行時,清除成功的工作。每項工作的存留期是由工作完成的日期與時間所決定。例如,如果某項工作在 10/1/07 下午 10:40 完成,而佇列清除工作在 10/2/07 下午 11:55 執行,則會清除此工作 (假設 [成功工作的清除存留期限制] 值為預設值 24 小時)。

有效範圍是 1 到 100000,預設值為 24 (一天)。

Note附註:
一般而言,成功的工作數目會比未成功的工作數目高出很多。因此,成功工作的清除存留期通常會設為比 [未成功工作的清除存留期限制] 值低的值。

未成功工作的清除存留期限制

此區段可讓您設定存留期的臨界值 (小時),到達此臨界值即會在佇列清除工作執行時,清除已完成但未成功狀態的工作 (例如,失敗但不封鎖相互關聯)。每項工作的存留期是由工作完成的日期與時間所決定。例如,如果某項工作在 10/1/07 下午 10:40 取消,而佇列清除工作在 10/2/07 下午 11:55 執行,則會清除此工作 (假設 [未成功工作的清除存留期限制] 值為預設值 24 小時)。

有效範圍是 1 到 100000,預設值為 168 (七天)。

簿記間隔

佇列系統會執行數個「簿記」工作。例如,喚起「休眠」狀態的工作、更新活動訊號時間戳記,或檢查是否有需要執行佇列清除工作。此設定控制這些工作執行的時間間隔 (毫秒)。

有效範圍是 500 到 300000,預設值為 10000 (10 秒)。

佇列逾時

在包含多部應用程式伺服器的伺服器陣列中,如果其中一部伺服器上的佇列 NT 服務失敗,工作即會自動分散到其餘執行佇列 NT 服務的應用程式伺服器上。佇列 NT 服務未更新其活動訊號的時間若超過 [佇列逾時] 值 (分鐘),即視同逾時。活動訊號是由其連絡的所有 Project Web Access 資料庫佇列所更新 (例如,每次輪詢已發佈的資料庫與草稿資料庫有無工作時)。

有效範圍是 2 到 20,預設值為 3。

Note附註:
[佇列逾時] 值任何時候都不能少於四倍的 [簿記間隔]。如果違反規則,[佇列逾時] 值即會自動變更為四倍的 [簿記] 值。

快速輪詢

[快速輪詢] 設定預設為啟用,可讓佇列儘速處理所有 [等待處理中] 狀態的工作。但是如果伺服器無法負荷此快速處理,需要佇列減緩處理速度,即可停用此設定。

如果停用 [快速輪詢],佇列會檢查是否有任何空閒的執行緒可處理工作。如果有,則會將 [等待處理中] 狀態的所有工作載入空閒的執行緒。然後等待輪詢間隔,再重複此程序。

如果啟用 [快速輪詢],當有擱置中的工作時,佇列不會等待輪詢間隔。當開始處理工作時,即會立即開始處理所有擱置中的工作。