全部產品
Search
文件中心

ApsaraDB RDS:【通知】SHOW PROCESSLIST死結Bug說明

更新時間:Jun 19, 2024

MySQL官方在8.0.28版本中,為每個會話引入了LOCK_thd_security_ctx鎖(Bug#32320541),該鎖的引入使得MySQL在執行SHOW PROCESSLIST語句時可能形成死結。本文將介紹這一類死結問題的發生原因及解決方案。

涉及版本

涉及的RDS MySQL 8.0小版本包括:

  • 20220830

  • 20221121

  • 20221231

  • 20230324

形成條件

MySQL官方Bug Report詳見外部Bug系統:Bug#110494,以下簡述形成死結的條件:

  • 執行SHOW PROCESSLIST命令,擷取鎖順序為LOCK_thd_removeLOCK_thd_security_ctx

  • 執行COM_CHANGE_USER命令,擷取鎖順序為LOCK_thd_security_ctxLOCK_status

  • 執行COM_STATISTICS命令或FLUSH STATUS命令或開啟Performance Agent功能,擷取鎖順序為LOCK_statusLOCK_thd_remove

上述三項條件同時成立後,就有可能形成LOCK_thd_remove->LOCK_thd_security_ctx->LOCK_status->LOCK_thd_remove的死結環。

影響

LOCK_thd_remove鎖和LOCK_status鎖會對執行個體造成較大影響,具體體現在以下方面:

  • 串連無法退出,如果一直有新串連建立,最終會導致串連數達到上限,無法串連執行個體。

  • SHOW GLOBAL STATUS等語句無法執行,執行個體監控資料無法採集。

  • Performance Agent停止記錄,丟失監控資料。

解決方案

RDS MySQL小版本20230610及以上,對SHOW PROCESSLIST語句時可能形成死結的問題進行了修複,對此建議使用者檢查目前的版本並根據情況升級小版本。詳情請參見升級核心小版本