You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何修复Odoo中Aeroo报告出现的Errno 5输入/输出错误

解决Odoo中Aeroo报告连接DOCS服务失败(Errno 5)的问题

根据你描述的场景:

运行Odoo的服务器此前一切正常,数日前Aeroo报告突然停止工作,生成的PDF文件损坏;进入配置页面测试连接时提示:Failure! Connection to DOCS service was not established or convertion to PDF unsuccessful! [Errno 5] Input/output error,但DOCS服务本身运行正常;仅重启Odoo服务并重新配置Aeroo后即可恢复,无需重启DOCS服务。

我来帮你拆解可能的原因和对应的解决/预防方案:

可能的根因分析

  • 连接资源泄漏:Odoo长时间运行后,进程持有的与DOCS服务的连接句柄可能因为超时、异常断开等原因失效,但没有被及时释放,导致新的连接请求无法建立。重启Odoo会彻底清理这些无效的资源句柄,重建正常连接。
  • 配置缓存失效:Odoo会缓存Aeroo的配置信息,如果DOCS服务曾出现短暂的状态波动(比如端口临时占用后释放),Odoo的缓存没有同步更新,后续的连接请求就会基于旧的失效信息报错,重启Odoo会清空缓存并重新读取配置。
  • 临时文件IO异常:Aeroo生成PDF依赖临时文件读写,如果Odoo进程的临时目录(默认是/tmp)出现权限不足、磁盘空间耗尽或文件句柄被占满的情况,就会触发Errno 5输入输出错误。重启Odoo可能会重置进程的临时文件权限,或者系统自动清理了临时目录的冗余文件,恢复正常IO。

解决方案

快速恢复(你已经验证有效)

直接重启Odoo服务,之后重新进入Aeroo配置页面测试并保存:

# 以systemd管理的Odoo为例
sudo systemctl restart odoo.service

长期预防措施

  1. 调整Odoo进程的文件描述符上限
    文件描述符不足是连接资源泄漏的常见诱因,你可以检查并提升上限:

    # 查看Odoo进程当前的文件描述符限制
    cat /proc/$(pidof odoo)/limits | grep "Max open files"
    

    如果上限低于65535,修改/etc/security/limits.conf添加:

    odoo soft nofile 65535
    odoo hard nofile 65535
    

    保存后重启Odoo服务生效。

  2. 配置独立的Aeroo临时目录
    避免系统临时目录的权限或清理机制干扰:

    # 创建专属临时目录
    mkdir -p /var/lib/odoo/aeroo_tmp
    # 设置正确的权限
    chown odoo:odoo /var/lib/odoo/aeroo_tmp
    chmod 755 /var/lib/odoo/aeroo_tmp
    

    然后在Aeroo的配置页面中指定这个目录为临时文件存储路径。

  3. 添加定时重启(周期性问题适用)
    如果问题会定期出现,可以在业务低峰期定时重启Odoo,用cron任务实现:

    # 编辑odoo用户的cron任务
    crontab -u odoo -e
    

    添加一行(比如每周日凌晨2点重启):

    0 2 * * 0 sudo systemctl restart odoo.service
    
  4. 监控连接状态
    可以编写简单的shell脚本,定期调用Odoo的Aeroo测试接口,一旦发现连接失败,自动触发Odoo重启(注意:需确保脚本的权限和容错机制,避免误操作)。

内容的提问来源于stack exchange,提问作者Mariano DAngelo

火山引擎 最新活动