所谓吞吐量就是说在一段时间以内应用花在处理客户端请求上时间跟花在处理其他任务上(比如垃圾回收)的时间的比值。比如说,应用跑了60分钟,其中有2分钟的时间用来做垃圾回收,也就是说应用花了3.33%(2/60*100)的时间用来做垃圾回收,也就说应用的吞吐量是96.67%(1-3.33%)。
导致吞吐量低的原因有哪些?
当应用存在以下问题的时候,系统的吞吐量就会变低:
(1)长时间的GC停顿
(2)内存泄露
(3)连续的FullGC
(4)存在CPU、IO等资源等待
1.长时间的GC停顿
当应用经历长时间GC停顿的时候,吞吐量就会下降。若果想了解什么原因导致的长时间的GC停顿并且该如何处理可以参考:JVM的GC停顿时间过长该怎么处理?
2.内存泄漏
当应用存在内存泄漏的时候,JVM可能就要不停的做FullGC,此时应用就需要花费比处理客户端请求更多的时间来做垃圾回收,关于内存泄露的诊断和处理可以参考:如何解决内存泄露?
3.连续的FullGC
有时候应用可能会遇到连续的FullGC,这时应用的吞吐量就会下降,因为FullGC要花费大量的时间。如何处理这种情况可以参考:JVM出现连续的FullGC该怎么办?
4.存在CPU、IO等资源等待
如果你的应用跟别的很多个线程都运行在同一台机器上,你的应用可能会得不到足够的CPU或者IO资源,这时候,应用的吞吐量也会下降,可以参考:GC日志中real时间比user+sys时间长该如何处理?
如果感觉有用,欢迎打赏加关注:

文章转载自爪哇优太儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




