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 支持团队获得进一步技术支持

问题已解决

  • 建议联系支持团队了解最新稳定版本
  • 制定升级计划以避免类似问题再次发生