2012-05-15 53 views
5

我在Tridion 2009 SP1上。有一次,查看所有用戶(即不是過濾器)的發佈隊列的能力剛剛停止工作。在CM GUI收到超時錯誤:無法獲取發佈隊列項目的列表。超時已過期

(80040E31) Timeout expired 
Unable to get list of publishing queue items. 

SQLUtilities.OpenRecordsetByStoredProcedure 
SystemDAL.GetListData 
SystemBLST.lObjListPublishTransactions 
SystemBLST.IBLSystemST_GetListData 
ManagementInfo.GetListPublishQueue 
Request.GetList 

所以我嘗試使用公開隊列管理器工具機智能無極清理隊列,但只是拋出一個500錯誤,這是具有在太多的項目一致隊列。

然後我試圖清除使用外表套上清除工具隊列,但仰臥起坐幾秒鐘,並返回相同的錯誤:

14-May-2012 21:10:12 Log cleared. 
14-May-2012 21:10:12 Purge action started at 14-May-2012 21:10:12 
14-May-2012 21:10:12 Keeping the last 5 versions. 
14-May-2012 21:10:12 Recursive mode: False 
14-May-2012 21:11:12 FAILED: <?xml version="1.0"?> 
<tcm:Error xmlns:tcm="http://www.tridion.com/ContentManager/5.0" ErrorCode="80040E31" Category="7" Source="Kernel" Severity="1"> 
    <tcm:Line ErrorCode="80040E31" Cause="false" MessageID="4613"><![CDATA[Unable to get list of publishing queue items.]]> 
     <tcm:Token>RESID_4485</tcm:Token> 
     <tcm:Token>RESID_15821</tcm:Token> 
    </tcm:Line> 
    <tcm:Line ErrorCode="80040E31" Cause="true"> 
     <![CDATA[Timeout expired]]> 
    </tcm:Line> 
    <tcm:Details> 
     <tcm:CallStack> 
      <tcm:Location>SQLUtilities.OpenRecordsetByStoredProcedure</tcm:Location> 
      <tcm:Location>SystemDAL.GetListData</tcm:Location>    
      <tcm:Location>SystemBLST.lObjListPublishTransactions</tcm:Location> 
      <tcm:Location>SystemBLST.IBLSystemST_GetListData</tcm:Location> 
      <tcm:Location>ManagementInfo.GetListPublishQueue</tcm:Location> 
     </tcm:CallStack> 
    </tcm:Details> 
</tcm:Error> 

事件日誌都顯示確切的同樣的錯誤。哦,是的,我試圖重新啓動COM +,發佈服務和傳輸服務。

因此看起來發布隊列處於不可訪問狀態。您能否提出原因可能是什麼或我的下一步?

+1

當你過濾列表,你確實得到它? –

+1

大部分用戶 - 是的。但是,當我對自己進行過濾時(通過批量發佈一百萬件物品來搞砸隊列的人) - 它也超時了。 –

+0

數據庫維護(或缺乏)通常是造成這種類型的錯誤的原因。 –

回答

4

有很多事情可以嘗試;

在代碼:

  1. 減少數據集可能特定時間段(每週,每月)
  2. 選擇具體的統計數據類型(失敗,成功等)一一

在基礎設施:

  1. 我不知道你正在嘗試做的,但如果你只是刪除交易,可能只是使用清除工具(但隨後您正在編碼,我假設它對於您的用例來說不夠聰明)
  2. 使用清除工具刪除與您的用例無關的舊事務
  3. 確保數據庫完全優化
  4. (如上所述)增加Tridion配置管理單元中的超時值
  5. 確保您擁有適用於您的Tridion版本的最新修補程序(2009 GA版本的隊列性能發生了許多變化和SP1
  6. 一般情況下確保硬件正在執行
+0

+1「使用清除工具刪除舊事務」,儘管我懷疑它會遇到同樣的超時。 –

+0

嗨尼科利。你知道哪些項目,或哪些項目的組合,從列出的問題解決問題嗎?我們遇到同樣的問題,我懷疑優化數據庫和清除發佈隊列將有助於實現這一目標,但希望得到您的反饋。謝謝, –

4

對於SQLServer和Internet Information Server,您的超時設置是什麼?如果他們處於股票違約狀態(不記得他們是什麼),可能值得嘗試增加它們。

如果它仍然失敗,可能在數據庫上留下痕跡,看看它爲什麼要花這麼長時間。

5

也許您可以查詢發佈事務表以獲取所有事務的tcm uri列表,並將其移至自定義數據庫中,並使用TOM.NET API/Core服務單獨打開每個事務並根據狀態使用API​​刪除它。

這樣,您可以以受控方式刪除交易,而無需直接在數據庫上工作。

+0

謝謝Arjen。在Tridion 2009中,核心服務不存在。使用TOM COM + API是我根據您的建議嘗試的一個選項。簡單的程序循環遍歷每個Tridion用戶[foreach(tdse.GetUsers()中的用戶u)),獲取他們的事務列表並逐個刪除事務。但是,當嘗試爲任何也有路的用戶檢索列表時很多項目,GetListPublishTransactions(queueFilter)函數失敗並導致超時,這會導致SQL Server查詢超時設置,一旦我獲得了DBA的支持,我將嘗試這些設置。 –

+1

如何獲取發佈事務的TCM URI列表通過直接的數據庫查詢?然後你仍然可以通過API刪除它們(因此不會在DB上得到支持問題) –

+0

這就是我所建議的:) –

0

我想,這可能是由於'N'In-Progress項數位於發佈隊列上造成的。

不要嘗試移除所有物品。順序

更好刪除隊列項目: -

  1. 失敗
  2. 在進步

除了這個,剛纔我看到一個修補程序。

Hotfix: CM_2009.1.74381

看一看這一點。

3

除了這裏列出的所有優點之外,您是否優化了數據庫?您應該計劃定期更新數據庫統計信息並重新編制索引。請諮詢您的DBA以安排維護計劃。

除了定期清理/清除交易外,快速更新CM DB(MSSQL:sp_updatestats)上的統計信息將有助於提高GUI的性能。

您可以檢查外表套上維護文檔here

0

從你在排隊甩一個極大的項目之前恢復CM數據庫的備份。不漂亮,但它可能會讓你在那裏。

否則,請諮詢Tridion支持他們可能願意採取哪些數據庫腳本來解決此問題。

相關問題