MDB_READERS_FULL: Environment maxreaders limit reached

故障概述

故障原因

此故障主要發生在以下環境中:

  • Edge Node 版本24.3.27-1 之前的版本
  • 伺服器配置:CPU 核心數超過 62

這是由於早期版本在處理高核心數伺服器時存在的已知限制導致的。

故障影響

該故障將導致:

  • Edge Node 程序無法正常啟動
  • 服務完全不可用,嚴重影響業務可用性

解決方案

緊急聯絡支援

請立即聯絡 OpenResty Edge 支援團隊,同時可按以下步驟進行應急處理。

應急處理方案

方案一:禁用 Cache Index

適用條件:錯誤資訊中包含 cache index 例如:cache index unable to start read transaction: MDB_READERS_FULL: Environment maxreaders limit reached

1. 禁用 cache index

修改配置檔案 /usr/local/oredge-node/conf/config.ini,新增以下內容:

[cache]
enabled = false
2. 清理相關配置
sed -i '/\(cache_index_lmdb\|cache_index_max_readers\|cache_index on;\)/d' /usr/local/oredge-node/conf/nginx.conf
3. 重啟服務
sudo systemctl start upgrade-oredge-node

方案二:升級 Edge Node 版本

說明:新版本的 Edge Node 通常向下相容舊版本的 Edge Admin,透過升級可徹底解決此問題。

1. 確定升級版本

根據您當前的 Edge Node 版本選擇對應的升級命令:

情況 1:當前版本 < 24.3.27-1

升級到 24.3.27-1 版本:

curl --compressed -SsLo openresty-edge-installer.sh \
  'https://openresty.com/client/oredge/openresty-edge-installer.sh' && \
sudo bash openresty-edge-installer.sh -a upgrade -c node -v 24.3.27-1

情況 2:當前版本在 24.3.27-1 ~ 25.6.15-1 之間

升級到 25.6.15-1 版本:

curl --compressed -SsLo openresty-edge-installer.sh \
  'https://openresty.com/client/oredge/openresty-edge-installer.sh' && \
sudo bash openresty-edge-installer.sh -a upgrade -c node -v 25.6.15-1
2. 驗證升級結果

如果升級指令碼執行失敗,請檢查新版本是否已成功安裝:

RPM 系統(CentOS/RHEL/Fedora):

rpm -q openresty-edge-node

DEB 系統(Ubuntu/Debian):

dpkg -l openresty-edge-node
3. 手動重啟服務(如需要)

如果新版本已安裝但服務未正常啟動,請按以下步驟操作:

3.1 停止服務

sudo systemctl stop oredge-node

3.2 確認程序完全退出

sudo systemctl status oredge-node

3.3 配置引數調整

  • 調整 cache_index_max_readers 引數:

    • 如果配置檔案中已存在該引數,將值修改為 516
    • 如果不存在,執行以下命令新增:
      sudo sed -i '/cache_index_lmdb/a \    cache_index_max_readers 516;' /usr/local/oredge-node/conf/nginx.conf
      
  • 調整 lua_config_max_readers 引數:

    • 如果配置檔案中已存在該引數,將值修改為 516
    • 如果不存在,執行以下命令新增:
      sudo sed -i '/lua_config_map_size/a \lua_config_max_readers 516;' /usr/local/oredge-node/conf/nginx.conf
      

3.4 啟動服務

sudo systemctl start oredge-node

3.5 檢查服務狀態

sudo systemctl status oredge-node

後續處理

問題仍未解決

  • 立即聯絡 OpenResty Edge 支援團隊獲得進一步技術支援

問題已解決

  • 建議聯絡支援團隊瞭解最新穩定版本
  • 制定升級計劃以避免類似問題再次發生