找回密码
 立即注册

QQ登录

只需一步,快速开始

扁担宽板凳长
金牌服务用户   /  发表于:2023-11-30 11:38  /   查看:1100  /  回复:7
本帖最后由 Richard.Huang 于 2024-3-8 10:51 编辑

产品:GcExcel
版本:V7

你好,gcexcel组件产生长期占用cpu长期不释放的线程,导致cpu占用过高,内存占用过高,影响到整个服务器。

image.png391220092.png
image.png332487181.png
cpu:
image.png96709593.png


image.png592132567.png
image.png340070494.png


内存:
image.png972204589.png





image.png749871520.png

7 个回复

倒序浏览
JoeJin
超级版主   /  发表于:2023-11-30 12:06:39
沙发
您好,能描述一下在单独的pod中,是具体如何使用GcExcel的吗?可能会涉及到以下一些问题,希望能补充一下信息。
1. 比如有用到processTemplate,那么template的文件是否复杂?
2. 绑定的数据源,数据量规模有多大?
3. 如果把pod中的任务,脱离pod来执行,是否会有CPU 和 内存是否有相同的表现结果?
4. 资源的占用是在 Task 执行的过程中,还是 Task 执行完了之后依旧没有释放?
回复 使用道具 举报
扁担宽板凳长
金牌服务用户   /  发表于:2023-11-30 14:19:28
板凳
本帖最后由 扁担宽板凳长 于 2023-11-30 14:20 编辑

1. 比如有用到processTemplate,那么template的文件是否复杂?
replay:模版有可能简单也有可能复杂,很多模版都会,是一个普遍现象,我提供一个样例模版。 消耗内存和CPU的模板.xlsx (7.52 KB, 下载次数: 69)
image.png557992553.png
image.png972053527.png
回复 使用道具 举报
JoeJin
超级版主   /  发表于:2023-11-30 16:41:08
地板
首先,对于本帖最初的主题,GcExcel 的 cpu 和内存占用率很高,这是因为 GcExcel 在 processTemplate 的时候,是尽可能的多使用资源来提高性能的。
这是正常情况,您可能需要结合实际检测到的并发量以及服务器负载,来动态调整容器分配的资源,以达到一个性能和资源之间的平衡点。


其次,对于资源占用及释放的问题。
从您监控的情况上看,在 processTemplate 结束后 GcExcel 不再使用 cpu 时, 会把资源释放出来,这是正常的结果。
对于内存,GcExcel 并没有做额外的控制,属于是 GC 托管。因此当内存在容器中没有释放时,建议在 processTemplate 之后,显示调用 GC 回收内存。
这样可以释放容器虚占的内存,缓解整个服务器的压力。

另外,从您的场景上,可能会延伸出两个问题:

1.  调用 GC 后,内存仍然释放不了。或者随着执行相同的任务( processTemplate + GC )。内存占用越来越高。
则说明 GcExcel 在内存使用上有问题,你可以另开一个帖子,我们会负责跟踪及调查。

2. 如果您在容器中使用,出现长时间 processTemplate 无法结束的情况,此时 cpu 和 内存无法释放是正常情况。问题的点在于为什么 processTemplate 无法结束。
届时您可以case by case的调研,如果遇到问题,可以另开一个帖子,我们帮助跟踪调查。

回复 使用道具 举报
扁担宽板凳长
金牌服务用户   /  发表于:2023-12-1 16:19:37
5#
好的,我们先尝试processTemplate之后手动调一下GC,观察一下效果
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-12-1 17:22:14
6#
好的哈,后续有问题再跟进。
SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
Lewis
注册会员   /  发表于:2024-2-28 13:16:24
7#
观察到模版文件中有双等公式,而且有整列的引用,可以尝试在调用processTemplate之前关闭计算引擎,处理完后再打开:
  1. workbook.setEnableCalculation(false);
  2. workbook.processTemplate();
  3. workbook.setEnableCalculation(true);
复制代码

看看能否缓解CPU和内存占用过高的情况
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-2-28 13:34:29
8#
Lewis 发表于 2024-2-28 13:16
观察到模版文件中有双等公式,而且有整列的引用,可以尝试在调用processTemplate之前关闭计算引擎,处理完 ...

SpreadJS 17.0.9 | GcExcel 7.1.2 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部