AWS Mainframe Modernization 自我管理體驗不再開放給新客戶使用。對於與 AWS Mainframe Modernization 自我管理體驗類似的功能,從廠商導向產品和來源探索功能 AWS Transform。現有客戶可以繼續正常使用該服務。如需詳細資訊,請參閱AWS 大型主機現代化可用性變更。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Mainframe Modernization Service (受管執行期環境體驗) 不再向新客戶開放。對於與 AWS Mainframe Modernization Service (受管執行期環境體驗) 類似的功能,請探索 AWS Mainframe Modernization Service (自我管理體驗)。現有客戶可以繼續正常使用該服務。如需詳細資訊,請參閱AWS 大型主機現代化可用性變更。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
故障診斷錯誤:等待資料集名稱解除鎖定時逾時
當您看到環境中的另一個應用程式在共用資料集上保持鎖定時,此頁面說明如何解決錯誤。
-
引擎:大型主機的 AWS 轉換
-
元件: Blusam
如果您在 AWS 大型主機現代化應用程式的 Amazon CloudWatch logs中看到此錯誤,使用大型主機引擎的 AWS Transform,並在具有高可用性模式的環境中執行,則表示另一個應用程式正在鎖定共用資料集。一般而言,如果其他應用程式當機或失敗,而且不會釋放鎖定,就會發生這種情況。
尋找失敗的應用程式,並檢查是否使用錯誤訊息中提到的相同資料集。檢查應用程式是否在具有高可用性模式的執行期環境中執行。引發逾時例外狀況的應用程式無法繼續,且會顯示 Failed 狀態。
常見原因
應用程式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。
Resolution
若要立即解決這種情況,您可以強制釋放鎖定。若要防止未來發生類似情況,您可以設定兩個參數來控制Blusam自動修復機制。
強制鎖定釋放
Blusam 鎖定管理員使用 Amazon ElastiCache (Redis OSS) 在應用程式之間提供共用鎖定。若要在 ElastiCache 中釋放鎖定,請使用 Redis CLI 公用程式。您無法刪除個別記錄鎖定。您必須從擁有的資料集移除所有鎖定。請完成下列步驟:
-
使用下列命令連線至 ElastiCache:
redis-cli -hhostname-pport您可以在 ElastiCache 主控台中找到 ElastiCache 的詳細資訊,網址為 https://https://console.aws.amazon.com/elasticache/
。 -
輸入您的密碼。
-
輸入您要執行的命令,如下所示:
命令 用途 KEYS *取得所有現有的金鑰。
KEYS *
YOUR_DATASET_NAME取得資料集鎖定金鑰。
DEL
THE_RETURNED_KEY刪除資料集鎖定。
FLUSHDB
清理整個 Redis。
警告
Redis 快取中的所有資料都會遺失。如果 Redis 用於其他用途,例如處理 http 工作階段,您可能不想使用
FLUSHDB。
設定Blusam自動修復機制
Blusam 鎖定管理員包含自動修復機制,可防止資料集或記錄發生死結。您可以在應用程式定義 (application-main.yml) 中調整下列參數,以設定自動修復機制:
-
locksDeadTime:是指應用程式可以保留鎖定的時間上限。當這段時間過後,系統會宣告鎖定已過期並立即釋放。locksDeadTime值以毫秒為單位,預設值為 1000。 -
locksCheck:定義用於檢查Blusam鎖定的鎖定管理員策略。ElastiCache 中的所有Blusam鎖定都會加上時間戳記,並具有過期時間。locksCheck參數值會判斷是否移除過期的鎖定。-
off:隨時都不會執行檢查。可能會發生死鎖。(不建議使用) -
reboot:當在 AWS Mainframe Modernization 執行時間環境中執行 AWS 的 Mainframe Modernization 應用程式執行個體啟動或重新啟動時,會執行檢查。所有過期的鎖定都會立即釋出。(預設) -
timeout:會在 AWS 大型主機現代化執行時間環境中執行 AWS 的 Mainframe Modernization 應用程式執行個體啟動或重新啟動,或在嘗試鎖定資料集期間逾時過期時執行檢查。過期的鎖定會立即釋放。
-
如需大型主機應用程式 AWS 轉換的應用程式定義詳細資訊,請參閱 AWS 大型主機應用程式定義範例的轉換。
Blusam 鎖定管理員
在 AWS 大型主機現代化執行期環境中使用高可用性模式的情況下,大型主機應用程式的 AWS 轉換可能會部署多次。對於處理Blusam資料集的應用程式,可能會發生並行存取問題。Blusam 鎖定管理員可確保資料完整性,並使用 ElastiCache 在應用程式之間提供共用鎖定,以管理對記錄和資料集的讀取和寫入存取。此機制允許多個應用程式同時讀取記錄,並確保一次只有一個應用程式寫入記錄。
寫入鎖定
若要更新或刪除特定記錄,應用程式必須先鎖定擁有記錄的資料集,然後鎖定記錄本身。當記錄鎖定時,會釋出資料集鎖定,且相同資料集的其他記錄可供使用。當更新或刪除操作完成時,會釋放保留的記錄鎖定。如果定義的應用程式政策允許等待發行,則一次只有一個應用程式可以更新記錄,這會封鎖其他應用程式讀取或寫入,直到鎖定釋放為止。
讀取鎖定
只要記錄或資料集上沒有寫入鎖定,多個應用程式就可以同時讀取相同的記錄。若要鎖定寫入操作的記錄,必須釋放所有讀取鎖定。
注意
Blusam 鎖定管理員會使用相同的鎖定機制,處理指定應用程式中多個執行緒的存取。