首先,对于本帖最初的主题,GcExcel 的 cpu 和内存占用率很高,这是因为 GcExcel 在 processTemplate 的时候,是尽可能的多使用资源来提高性能的。
这是正常情况,您可能需要结合实际检测到的并发量以及服务器负载,来动态调整容器分配的资源,以达到一个性能和资源之间的平衡点。
其次,对于资源占用及释放的问题。
从您监控的情况上看,在 processTemplate 结束后 GcExcel 不再使用 cpu 时, 会把资源释放出来,这是正常的结果。
对于内存,GcExcel 并没有做额外的控制,属于是 GC 托管。因此当内存在容器中没有释放时,建议在 processTemplate 之后,显示调用 GC 回收内存。
这样可以释放容器虚占的内存,缓解整个服务器的压力。
另外,从您的场景上,可能会延伸出两个问题:
1. 调用 GC 后,内存仍然释放不了。或者随着执行相同的任务( processTemplate + GC )。内存占用越来越高。
则说明 GcExcel 在内存使用上有问题,你可以另开一个帖子,我们会负责跟踪及调查。
2. 如果您在容器中使用,出现长时间 processTemplate 无法结束的情况,此时 cpu 和 内存无法释放是正常情况。问题的点在于为什么 processTemplate 无法结束。
届时您可以case by case的调研,如果遇到问题,可以另开一个帖子,我们帮助跟踪调查。
|