我有一个django 2应用程序,可以将1张照片上传到多张照片(每张图像约3-4 MB),并使用face_recognition查找脸部位置和编码。图像和创建的缩略图将保存到文件系统中,并将数据保存在mysql数据库中。该应用程序正常运行,除了在3张照片中上传和查找16张面孔需要大约2分钟并使用大约6.5 GB的RAM并且没有交换(我的Ubuntu 18.04系统总共有16 GB的RAM并运行约8 GB的可用内存)和1 GB的交换空间。)
当我使用celery(v 4.2.1)和redis(v 2.10.6)和redis-server(v 4.0.9)从django应用程序卸载人脸识别时,celery任务用尽了内存,并且工人在完成之前被杀死。每张照片有1个芹菜任务用于面部识别,django负责处理这三张照片的文件上传,缩略图创建和数据库写入。通常,一项任务将完成,但并非总是如此。我什至为芹菜任务添加了指数重试,但这无济于事。在芹菜人脸识别过程中,在顶部查看时,我注意到可用RAM的数量保持在6 GB左右,但是1 GB的交换空间已被完全消耗,然后芹菜任务开始死亡。它们死后,我收到的错误消息已耗尽内存。
根据我的观察,我得出的结论是我的系统有足够的RAM来存储这三张图片,但是我需要以某种方式调整celery,以便使用更少的交换空间和更多的内存。我不确定这是否是真正的问题,也没有找到任何方法来调节芹菜。顺便说一句,无论是否在调试模式下运行django,我都有相同的问题。
感谢您提出解决芹菜内存不足问题的任何建议。
标记