arextest / arex-agent-java

Lightweight Java agent for traffic capture and replay, enhancing testing and debugging.
https://doc.arextest.com/
Apache License 2.0
416 stars 82 forks source link

[Bug] 0.4.4 agent 部署后,服务OOM #478

Closed pengjinming closed 1 month ago

pengjinming commented 1 month ago

Search before asking

AREX Test Service

AREX Java Agent (arextest/arex-agent-java)

Current Behavior

更新agent版本为0.4.4,启动java服务,出现OOM wx_camera_1715225363792

Expected Behavior

服务正常

Steps To Reproduce

使用0.4.4版本,启动服务,正常录制流量 clob 大数据类型,造成序列化 oom

Anything else

No response

Are you willing to submit a pull request to fix on your own?

lucas-myx commented 1 month ago

AREX agent新版本增加了完整序列化复杂类型的数据结构,如Map<String, Object>这种类型时,在序列化时会记录Object的具体类型以便在回放时能正确还原实际类型,这样会多占用一些内存空间,具体表现是jvm新生代的Eden区在序列化时会有所上升(序列化结束后就下降至正常水位,视序列化的数据大小而定,不会出现内存泄露问题)

经过和用户沟通以及分析dump文件确认,Dal层使用了Map<String, oracle.sql.CLOB>这种大数据类型,且用户jvm堆内存资源本身比较紧张,处于一个临界值,所以最终的方案是用户扩容内存解决