收起左侧

【Bug报告】相册人脸识别功能存在内存管理缺陷,在大量照片时无法完成聚类任务

13
回复
140
查看
[ 复制链接 ]

6

主题

28

回帖

0

牛值

江湖小虾

2025-11-22 19:29:24 显示全部楼层 阅读模式

问题描述

飞牛NAS相册的人脸识别功能在处理大量照片时,由于内存管理不善,导致人脸聚类任务无法完成。具体表现为:当识别照片数量达到一定规模后,AI管理服务因内存不足被OOM Killer强制终止,导致人脸聚类过程失败。

环境信息

  • 设备型号:N150(内存16GB,无法扩展)
  • 飞牛NAS版本:最新稳定版
  • 照片数量:10万张+
  • 问题重现:100%可重现

详细错误日志

time="2025-11-21T23:47:05+08:00" level=error msg="imageSrv.GenJpegThumb error: not supported yet" time="2025-11-22T02:50:42+08:00" level=error msg="aimanager.SrvCallClusterGetRequestState requestId:6fc62f69-7d1c-4ad9-8037-516a63338ec4 err: Post \"http://unix/v1/srv/call\": dial unix /var/run/ai_manager_internal.sock: connect: connection refused" time="2025-11-22T02:50:41 fnos systemd[1]: ai_manager.service: A process of this unit has been killed by the OOM killer."

问题分析

根本原因

  1. 内存消耗无限制:人脸聚类算法(疑似DBSCAN)内存复杂度为O(n²),随着人脸数量增加呈指数级增长
  2. 缺乏分批处理机制:系统尝试一次性处理所有人脸数据,超出物理内存容量
  3. 交换空间利用不足:未有效使用swap空间缓解内存压力

技术细节

  • AI管理器服务(ai_manager)在处理人脸聚类时内存占用失控
  • 进程被OOM Killer终止后,相关状态文件损坏
  • 服务自动重启但无法恢复中断的任务
  • 用户无法手动重新开始识别(系统认为任务已完成)

重现步骤

  1. 在相册中上传数万张含有人脸的照片
  2. 等待系统开始人脸识别和聚类
  3. 观察系统日志,可见内存使用逐渐上升
  4. 当内存使用超过85%时,AI服务被OOM Killer终止
  5. 人脸聚类任务永久卡住,显示"无未识别的照片"

功能改进建议

高优先级

  1. 实现分批处理机制

    • 设置人脸数量阈值(如每500个人脸进行一次聚类)
    • 聚类完成后清理内存,继续下一批
  2. 增加内存使用监控

    • 实时监控内存使用率,接近阈值时暂停或减速处理
    • 提供可视化内存使用提示
  3. 改进错误恢复机制

    • 任务被OOM Killer终止后能够自动恢复
    • 提供手动重新开始识别的选项

中优先级

  1. 优化算法内存效率

    • 考虑使用内存效率更高的聚类算法
    • 实现流式处理,减少内存中同时保存的数据量
  2. 提供用户配置选项

    • 允许用户设置最大内存使用限制
    • 提供处理优先级选择(速度vs内存)

低优先级

  1. 增强日志和诊断信息

    • 明确显示当前处理进度和内存使用情况
    • 在Web界面提供详细的错误信息

用户体验影响

  • 用户无法可靠使用人脸识别核心功能
  • 数据量较大的用户基本无法正常使用该功能
  • 每次失败都需要手动干预,体验较差

期望结果

希望在下一个系统版本中能够:

  • ✅ 实现稳定的内存管理,防止OOM崩溃
  • ✅ 添加分批处理机制,支持大规模照片库
  • ✅ 提供任务状态监控和错误恢复功能

附加信息

此问题在社区中多次被提及,但尚未有根本解决方案。对于内存不可扩展的机型(如N100、N150系列)影响尤为严重。

收藏
送赞
分享

6

主题

28

回帖

0

牛值

江湖小虾

2025-11-24 07:53:05 楼主 显示全部楼层
又重新识别了一次
Nov 24 03:38:51 fnos kernel: trim.cluster invoked oom-killer Nov 24 03:38:51 fnos kernel: Out of memory: Killed process 3338412 (trim.cluster) Nov 24 03:38:51 fnos systemd[1]: ai_manager.service: A pr  详情 回复
2025-11-24 07:53

6

主题

28

回帖

0

牛值

江湖小虾

2025-11-24 07:53:32 楼主 显示全部楼层
stevenjue 发表于 2025-11-24 07:53
又重新识别了一次

Nov 24 03:38:51 fnos kernel: trim.cluster invoked oom-killer
Nov 24 03:38:51 fnos kernel: Out of memory: Killed process 3338412 (trim.cluster)
Nov 24 03:38:51 fnos systemd[1]: ai_manager.service: A process of this unit has been killed by the OOM killer.
Nov 24 03:38:51 fnos systemd[1]: ai_manager.service: Failed with result 'oom-kill'

151

主题

1万

回帖

0

牛值

管理员

fnOS1.0上线纪念勋章

2025-11-26 19:04:34 显示全部楼层
已知问题,目前是全量聚合后续会考虑优化这一情况

9

主题

19

回帖

0

牛值

江湖小虾

2025-11-26 21:54:02 显示全部楼层

我更新1.0版后,新增照片人脸识别都有问题是不是这个原因?

我更新正式版之前就有这个问题了,你照片多少?内存多大?  详情 回复
2025-11-27 11:00

6

主题

28

回帖

0

牛值

江湖小虾

2025-11-27 11:00:37 楼主 显示全部楼层
ido_t0650 发表于 2025-11-26 21:54
我更新1.0版后,新增照片人脸识别都有问题是不是这个原因?

我更新正式版之前就有这个问题了,你照片多少?内存多大?
12万张,内存8g  详情 回复
6 天前

9

主题

19

回帖

0

牛值

江湖小虾

stevenjue 发表于 2025-11-27 11:00
我更新正式版之前就有这个问题了,你照片多少?内存多大?

12万张,内存8g
内存应该不够用  详情 回复
5 天前

6

主题

28

回帖

0

牛值

江湖小虾

5 天前 楼主 显示全部楼层

内存应该不够用
怎么看是否内存不够,您的那个日志是哪里看的  详情 回复
3 天前

4

主题

8

回帖

0

牛值

江湖小虾

我是n150 12G内存 每次同步照片(昨天只新增了十几张照片,几分钟就识别完成了,识别结果倒也都没问题)识别完成10个小时以后 依然待机CPU温度接近70度 IO等待20%以上 只能重启才能恢复正常

你照片总数多少?是否主要是人像照?  详情 回复
4 天前

6

主题

28

回帖

0

牛值

江湖小虾

4 天前 楼主 显示全部楼层
pdone 发表于 2025-12-1 09:29
我是n150 12G内存  每次同步照片(昨天只新增了十几张照片,几分钟就识别完成了,识别结果倒也都没问题)识 ...

你照片总数多少?是否主要是人像照?
照片总共3000多张 人像照大致只有四五百吧  详情 回复
4 天前

4

主题

8

回帖

0

牛值

江湖小虾

stevenjue 发表于 2025-12-1 15:41
你照片总数多少?是否主要是人像照?

照片总共3000多张   人像照大致只有四五百吧   

9

主题

19

回帖

0

牛值

江湖小虾


怎么看是否内存不够,您的那个日志是哪里看的

0

主题

3

回帖

0

牛值

江湖小虾

3 天前 显示全部楼层
我的ai识别直接炸机。后台进不去,只能断 电重启
一样,N305  详情 回复
昨天 09:37

0

主题

1

回帖

0

牛值

江湖小虾

初生牛犊 发表于 2025-12-2 21:03
我的ai识别直接炸机。后台进不去,只能断 电重启

一样,N305
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则