-
Notifications
You must be signed in to change notification settings - Fork 139
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
好似内存不能自动释放 #135
Comments
如果使用重启策略的话 我是docker部署的怎么监听和重启呢还是内部重启的 这边可以给一下代码吗 |
看了一下其他的issue 这里可以改为套接字参数的方式配置最大占用内存触发重启 以及空闲多少秒重启引擎吗 还有Java这块demo套接字传入的配置参数没有运行是无效的 |
可以在(Umi-OCR的仓库里)[https://github.com/hiroi-sora/Umi-OCR]找找看。不过主要就是以下几种方法:
PaddleOCR-json 之后将会重构,跟进PaddleOCR v2.7+ 版本,这个版本已经解决了内存泄漏的问题。所以说PaddleOCR-json短期内应该不会处理这个问题。 不过我觉得可以先加一个临时的内存清理功能用着先,之后重构时再去掉。你怎么看 @hiroi-sora |
引擎内部是没有直接触发重启的机制的
如果你是用java demo来调用的docker容器api的话,输入参数是没用的。因为java api的参数是直接输入给一个本地进程的,而docker容器会自动启动引擎进程。 |
这边纯Java服务端调用的应用 其他语言编程能力几乎为0 很多地方不懂也不会改代码 目前这个版本好像会固定吃掉1200M内存 我先上线使用吧 待后续有更新优化我再重新构建docker镜像使用 |
我想一下,能否把Umi那一套 http api 的模块拆分出来,这样就能实现自动化的外部内存管理 |
我加了一个简单的内存管理功能,直接新开一条线程来清理PPOCR对象,在这个branch。和外部内存管理相比,这个方案不需要额外带一个python程序和环境,但是内存清理的不太干净,在我的机子上最终会保持600MB的占用(引擎初始占用只有100MB)。 |
另外我觉得可以新开一个issue来讨论引擎重构相关的内容。多大幅度的重构?具体要去掉/增加什么功能?引擎上面的API和Umi-OCR要跟着改动多少?等等。这样也方便其他开发者来贡献。 |
看了你的代码,按理说 det cls rec 三个模型对象都已经删除了,也许是mkl的占用没删。试下命令行 如果关掉mkl就没有残留了,说明引擎进程中不管怎么改都无法实现完全的重启,必须用外部进程来管理,将引擎进程kill掉才能释放所有占用的内存。
明白。不过我最近较忙,大幅度的改动可能等过段时间看看 |
关掉了还有残留。在我的机子上:引擎初始占用100MB,跑一次OCR之后变成575MB,之后自动清理内存后变成525MB。
我接下来下半年也比较忙,有时间我就看看。 |
我把引擎放docker里挂着测试了差不多一天,感觉应该没问题。 总共做了两次测试,第一次是:引擎在30分钟没有OCR任务后就清理内存,然后我让另一个python脚本每隔20分钟就发送一个OCR任务给引擎。在这种情况下,引擎完全没有清理内存的时间,内存占用是按照输入的OCR任务来的,在达到一个上限后就稳定起来了。 再意识到第一次测试测不到内存清理功能后我又做了第二次测试:这次让引擎在30分钟没有OCR任务后就清理内存,然后另一个python脚本每隔50分钟就发送随机0~10个OCR任务给引擎。 (横轴时间、纵轴内存占用。在第4小时之后我就把python脚本停下了) 这次就好很多了,内存清理有在正常工作。只要没有频繁的OCR任务,引擎内存占用就会降下来到一个固定值(在我这里是600MB左右)。 不过内存确实是清理不干净,估计某些依赖的资源没有被完全释放。我检查了一下OCR的输出,没发现什么问题,所以这个功能应该不影响OCR? 下面是测试用的数据、脚本、和结果。结果是那些 没有问题的话我就整理一下发个PR。 |
这样吧,
|
行了 |
更新内存问题相关文档 + 添加localhost作为套接字特殊地址 (#135)
|
v1.4.1 新测试版跟进了 PP-OCR 最新推理库,在内存控制方面有了很大优化,连续执行OCR任务的内存占用为 1.5GB 左右(以前>2.5GB)。另外,新增了参数 https://github.com/hiroi-sora/PaddleOCR-json/releases/tag/v1.4.1-dev 不过,新版本中我没有正式引入 空闲时自动释放内存 的功能。原因:
|
docker部署 套接字服务
启动一开始
![start](https://private-user-images.githubusercontent.com/50137012/343090509-67e23ba2-0fe2-43f9-891f-2e8e80155dcb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NDM0OTYsIm5iZiI6MTczOTY0MzE5NiwicGF0aCI6Ii81MDEzNzAxMi8zNDMwOTA1MDktNjdlMjNiYTItMGZlMi00M2Y5LTg5MWYtMmU4ZTgwMTU1ZGNiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE4MTMxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFkNGYzZjUxYmM1NzUxZjgxYjgzMTFjZTNmNDlmZTdkMjk4NzJmMzg2MzIyOWE0NTYyZWRjYjAyMGViMjJkYmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.8IpdL5kfi0BTni8EFuTsBiw50vK2wjv37ApsvUqMYZ0)
运行一段时间后 识别了很多图片 然后中间闲置一天 但是内存一直不下来
![end](https://private-user-images.githubusercontent.com/50137012/343090667-416301ab-419d-4de2-8568-2be7bf2dcdce.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk2NDM0OTYsIm5iZiI6MTczOTY0MzE5NiwicGF0aCI6Ii81MDEzNzAxMi8zNDMwOTA2NjctNDE2MzAxYWItNDE5ZC00ZGUyLTg1NjgtMmJlN2JmMmRjZGNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDE4MTMxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI3NWEwZTRmM2Q5ZmZjNjU4NjYxODUwZTJiZjFhOGEwYzg0MjgyNDVjYjhiZWNjZmFiYTRiZmY4NjMzMjA1MGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.7gwfWgbsjQe1qWmKfcsDnE-o_tvAkNpfRjadFqBClYI)
The text was updated successfully, but these errors were encountered: