You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArangoDB突发No file descriptors available IO错误,写入操作失败求助

问题解决步骤

1. 修复版本不匹配问题

你的ArangoDB服务器版本(0.18.2)与客户端工具(arangosh 3.11.8)存在严重版本差异,这是引发异常的核心隐患之一:

  • 卸载当前的ArangoDB服务器版本,安装与arangosh匹配的3.11.8版本
  • 安装完成后验证版本一致性:执行arangod --version和arangosh --version,确保两者版本完全一致

2. 解决文件描述符不足问题

错误提示No file descriptors available明确指向系统/进程的文件描述符配额耗尽:

  • 临时调整(当前会话生效):
    执行命令提升当前shell的文件描述符限制:
    ulimit -n 65535
    
    随后重启ArangoDB服务:
    systemctl restart arangodb3
    
  • 永久调整(系统重启后生效):
    1. 编辑/etc/security/limits.conf,添加以下内容:
      arangodb soft nofile 65535
      arangodb hard nofile 65535
      
    2. 编辑/etc/systemd/system.conf,修改或添加:
      DefaultLimitNOFILE=65535
      
    3. 重载systemd配置并重启服务:
      systemctl daemon-reload
      systemctl restart arangodb3
      

3. 修复RocksDB损坏的数据文件

RocksDB压缩失败后标记数据库为只读,且缺失指定.sst文件,需修复数据目录:

  • 先停止ArangoDB服务:
    systemctl stop arangodb3
    
  • 备份数据目录(必须执行,防止数据丢失):
    cp -r /ssd1/arangodb3 /ssd1/arangodb3_backup_$(date +%Y%m%d)
    
  • 执行ArangoDB的修复命令(升级到3.11.8版本后使用):
    arangod --repair --database.directory /ssd1/arangodb3
    
  • 修复完成后启动服务,验证是否恢复正常:
    systemctl start arangodb3
    

4. 优化批量插入配置

针对你的Python多进程插入场景,优化配置减少资源占用:

  • 调整ArangoDB的RocksDB配置:编辑/etc/arangodb3/arangod.conf,添加或修改:
    [rocksdb]
    max-open-files = 10000
    
    重启服务生效
  • 降低Python应用的并发数:64进程可能超出系统和数据库的承载能力,尝试调整为32或16进程
  • 使用ArangoDB的批量插入API(如Python驱动的bulk_insert方法或arangodb-bulk-import工具)代替单条AQL插入,大幅减少IO和连接开销

内容的提问来源于stack exchange,提问作者Teakwood J Overclutch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:23:13