最近阿里的朋友,遇到一个性能问题,现象如下:
他的一个api里面有5个外部的service需要调用,在压力测试情况下,出现性能很差,响应速度很慢,系统吞吐量也很快下降。
最终查明,他的api调用其中一个service的时候,return的数据有700多条数据,进行压力测试的时候,young generation不够分配,大量的请求后的数据,直接分配到old generation了,而当大量的请求并发执行时,full gc频繁启动,我们知道full gc的时候,对于默认的parallel gc,整个应用程序会停顿,从而造成程序执行速度很慢,于此同时垃圾回收的速度远比需要分配的内存大,从而造成吞吐量随着时间的推延,速度越来越慢。
朋友解决的问题方案如下(不是很好):扩大堆内存。
这个解决方案不是最终的解决方案,最终的结果是表面上,造成性能下降的时间推延了,据测试8个小时的持续压力下没有问题,但是时间再长一点问题可能会更加严重。。。。。。
有没有更好的解决方案呢?我需要去了解具体的需求再尽兴阐述。。。。。。
API性能瓶颈与GC优化
本文探讨了一项API在压力测试中因大量数据导致的性能问题。问题源于一次调用返回过多数据,使得年轻代内存不足,进而频繁触发Full GC,严重影响了应用性能。文中提出扩大堆内存作为临时解决方案,并寻求更根本的优化方法。
2万+

被折叠的 条评论
为什么被折叠?



