錯誤:等待資料集名稱解除鎖定時逾時 - AWSMainframe Modernization Services

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

錯誤:等待資料集名稱解除鎖定時逾時

  • 引擎:藍色時代

  • 元件:布魯薩姆

如果您在 Amazon 上看到此錯誤 CloudWatch 日誌AWS使用 Blu Age 引擎的大型主機現代化應用程式,並在具有高可用性模式的環境中執行,這表示另一個應用程式在共用資料集上持有鎖定。通常情況下,如果其他應用程式當機或以其他方式失敗而未解除鎖定,就會發生這種情況。

這個錯誤是如何發生的

應用example-app-1嘗試鎖定記錄example-record-1用於寫入操作。此操作會在數據集上創建一個鎖example-dataset-1,其擁有example-record-1,並鎖定example-record-1本身。現在另一個應用程序,example-app-2,嘗試鎖定相同的記錄example-record-1。數據集和記錄已被鎖定,因此example-app-2等待鎖定釋放。如果example-app-1崩潰,數據集上的保留鎖example-dataset-1仍然存在,這會導致example-app-2取消其寫入嘗試並引發超時異常。這種死鎖情況可以防止所有應用程序到達example-dataset-1

你怎麼知道這是否是你的情況?

尋找失敗的應用程式,並檢查它是否使用錯誤訊息中提到的相同資料集。檢查應用程式是否在具有高可用性模式的執行階段環境中執行。引發逾時例外狀況的應用程式無法繼續,並會顯示Failed狀態。

您能怎麼做?

若要立即解決此情況,您可以強制釋放鎖定。為了防止 future 發生類似情況,您可以配置兩個控制 Blusam auto 修復機制的參數。

強制鎖定釋放

布魯桑鎖定管理器使用亞馬遜 ElastiCache 讓 Redis 在應用程序之間提供共享鎖。若要解除鎖定 ElastiCache,請使用 Redis 的 CLI 公用程式。您無法刪除個別鎖定 您必須移除擁有資料集中的所有鎖定。完成下列步驟:

  1. Connect 到您的 ElastiCache 使用下列命令:

    redis-cli -h hostname -p port

    您可以找到您的詳細資訊 ElastiCache 中的 ElastiCache 主控台https://console.aws.amazon.com/elasticache/

  2. 輸入您的密碼。

  3. 輸入您要執行的命令,如下所示:

    命令 用途

    KEYS *

    取得所有現有的金鑰。

    按鍵 *您的資料集名稱

    取得資料集鎖定金鑰。

    德爾返回鍵 (_)

    刪除資料集鎖定。

    刷新數據庫

    清理整個 Redis 的。

    警告

    Redis 快取中的所有資料都會遺失。如果 Redis 用於其他目的,例如處理 http 會話,則可能不希望使用FLUSHDB

配置布魯桑自 auto 修復機制

Blusam 鎖定管理器包括一個 auto 修復機制,以防止數據集或記錄死鎖。您可以調整下列應用程式定義中的參數 (application-main.yml) 來設定 auto 修復機制:

  • locksDeadTime: 是指應用程序可以保持鎖的最長時間。當這段時間過去時,鎖定聲明過期並立即釋放。所以此locksDeadTime值以毫秒為單位,預設值為 1000。

  • locksCheck:定義用於檢查鎖定的 Blusam 鎖定管理員策略。所有布魯桑都會鎖定 ElastiCache 有時間戳記並具有到期時間。所以此locksCheck參數值決定是否移除過期的鎖定。

    • off:任何時候都不會執行任何檢查。可能會發生死結。(不建議使用)

    • reboot:檢查執行時AWS大型主機現代化應用程式執行個體在AWS大型主機現代化執行階段環境已啟動或重新啟動。所有過期的鎖定都會立即釋放。(預設)

    • timeout:檢查執行時AWS大型主機現代化應用程式執行個體在AWS大型主機現代化執行階段環境會啟動或重新啟動,或在嘗試鎖定資料集期間逾時到期時。過期的鎖定會立即釋放。

如需 Blu Age 應用程式的應用程式定義的詳細資訊,請參閱藍色時代應用程式定義範例

布魯桑鎖定

在一個的上下文AWS使用高可用性模式的大型主機現代化運行時環境,Blu Age 應用程序可能會多次部署。對於處理 Blusam 資料集的應用程式,可能會發生並行存取問題。Blusam 鎖定管理器確保數據完整性,並通過使用提供應用程序之間的共享鎖來管理對記錄和數據集的讀寫訪問 ElastiCache。這種機制允許多個應用程序同時讀取記錄,並確保一次只有一個應用程序寫入記錄。

寫鎖定

若要更新或刪除特定記錄,應用程式必須先鎖定擁有該記錄的資料集,然後鎖定記錄本身。當記錄被鎖定時,數據集鎖定被釋放,同一個數據集中的其他記錄可供使用。更新或刪除作業完成時,會釋放保留的記錄鎖定。一次只有一個應用程式可以更新記錄,如果定義的應用程式原則允許等待釋放,則會封鎖其他應用程式讀取或寫入,直到釋放鎖定為止。

讀鎖定

只要記錄或資料集上沒有寫入鎖定,多個應用程式就可以同時讀取相同的記錄。若要鎖定寫入作業的記錄,必須釋放所有讀取鎖定。

注意

Blusam 鎖定管理器使用相同的鎖定機制處理來自給定應用程序中的多個線程的訪問。