如何修复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
长期预防措施
调整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服务生效。
配置独立的Aeroo临时目录
避免系统临时目录的权限或清理机制干扰:# 创建专属临时目录 mkdir -p /var/lib/odoo/aeroo_tmp # 设置正确的权限 chown odoo:odoo /var/lib/odoo/aeroo_tmp chmod 755 /var/lib/odoo/aeroo_tmp然后在Aeroo的配置页面中指定这个目录为临时文件存储路径。
添加定时重启(周期性问题适用)
如果问题会定期出现,可以在业务低峰期定时重启Odoo,用cron任务实现:# 编辑odoo用户的cron任务 crontab -u odoo -e添加一行(比如每周日凌晨2点重启):
0 2 * * 0 sudo systemctl restart odoo.service监控连接状态
可以编写简单的shell脚本,定期调用Odoo的Aeroo测试接口,一旦发现连接失败,自动触发Odoo重启(注意:需确保脚本的权限和容错机制,避免误操作)。
内容的提问来源于stack exchange,提问作者Mariano DAngelo




