纯干货:线上出现fullGC次数很多的排查思路以及实践总结
最近线上发布了一个版本,导致full gc次数忽然就上去了,虽然对线上业务造成的影响还不是很大,但是为了以防万一还是对这个问题做了相关排查。
GC命令排查
一开始还是从堆的变化开始:
# 查看每秒的堆发生的变化以及gc的次数
jstat -gcutil pid 1000
相关参数:
s0
: Heap上的 Survivor space 0 区已使用空间的百分比s1
: Heap上的 Survivor space 1 区已使用空间的百分比E
: Heap上的 Eden space 区已使用空间的百分比O
: Heap上的 Old space 区已使用空间的百分比P
: Perm space 区已使用空间的百分比M
:元数据区使用比例CCS
:压缩使用比例YGC
: 从应用程序启动到采样时发生 Young GC 的次数YGCT
: 从应用程序启动到采样时 Young GC 所用的时间(单位秒) FGC — 从应用程序启动到采样时发生 Full GC 的次数FGCT
- 从应用程序启动到采样时 Full GC 所用的时间(单位秒) GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
抓到了一个fullgc 升级的截图:
从这里发现在触发full gc的时候只有新生代的堆发生了明显的回收,但是老年代几乎没发生变化。
所以不是老年代的内存不足导致的,然而第一感觉是会不会有大对象直接越过新生代直接到了老年代呢?但是现在想想应该也不太会,因为gc完之后老年代没有很明显的上升变化。
既然这里看不出什么就开始另寻他路了。
gc的日志分析:
GC参数 建议线上都把这些日志打开
JVM的GC日志的主要参数包括如下几个:
-XX:+PrintGC # 输出GC日志
-XX:+PrintGCDetails #输出GC的详细日志
-XX:+PrintGCTimeStamps #输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps #输出GC的时间戳(以日期的形式,如 2017-09-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC #在进行GC的前后打印出堆的信息
-Xloggc:../logs/gc.log #日志文件的输出路径
拿到gc日志一行行看太麻烦了,这里推荐一个在线分析gc日志的神器:
gceasy
从线上拿到日志之后,上传到该网站,就会得到很多可视化的结果。
堆的分配情况
GC时间的区域划分
这里可以看到:
- 最大的一次gc时间超过了1秒钟,平均的时间都在35ms之间。
- 大部分时间都是在1秒以内,只有2次gc时间超过1秒。
GC前后的可视化图
红色的代表full gc时候的堆大小,都没有超过300M。
minorgc是挺多,但是都在堆接近满了的情况。
GC停顿的情况
我们这里比较关注full gc在198次,停顿时间在1分钟左右,每8分钟的样子就会触发一次。
GC触发的原因
这个图里面包含了很多关键的信息:
- System.gc()触发的总数过多,达到300+次。
- 其他的都是空间分配不足导致的gc,但是大部分是minor gc 这个是可以接受的。
得到上面的信息可以发现绝大部分的full gc引发的原因就是System.gc()
导致的,至于为什么超过300次?明明不是198次吗?稍后解答.
到底是哪里调用了System.gc?
这个是个很尴尬的问题,有可能是框架,也有可能是业务代码中。
想了解这个原因的时候联想到了阿里开源的arthas
神器啊!
他有个功能能够在不重启的应用和改代码的情况下,对指定的方法进行拦截。
不说了,开干!
启动
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
开启安全方法拦截
[arthas@18792]$ options unsafe trueNAME BEFORE-VALUE AFTER-VALUE
----------------------------------- unsafe false true
拦截指定的方法
[arthas@18792]$ stack java.lang.System gc
Press Q or Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 277 ms
# 然后安静的等待调用出现吧!!!!!
然后安静的等待调用出现吧!!!
我这里贴一个我拦截的结果:
ts=2020-03-16 19:30:09;thread_name=http-nio-5314-exec-26;id=102;is_daemon=true;priority=5;TCCL=org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedWebappClassLoader@781d050@java.lang.System.gc()at com.elab.core.utils.DateUtils.stringToDate(DateUtils.java:358)at com.elab.marketing.auth.service.impl.AdviserDispatchImpl.dispatch(AdviserDispatchImpl.java:162)at com.elab.marketing.auth.service.impl.AdviserDispatchImpl.dispatch(AdviserDispatchImpl.java:86)at com.elab.marketing.auth.service.impl.AdviserDispatchImpl$$FastClassBySpringCGLIB$$d0a51ab4.invoke(<generated>:-1)at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85)at com.elab.log.asepct.CatAspect.aroundMethod(CatAspect.java:65)at com.elab.marketing.auth.config.aspect.ServiceAspectBean.around(ServiceAspectBean.java:47)at sun.reflect.GeneratedMethodAccessor172.invoke(null:-1)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:618)at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)at com.elab.marketing.auth.service.impl.AdviserDispatchImpl$$EnhancerBySpringCGLIB$$6e910ff2.dispatch(<generated>:-1)at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at com.elab.log.filter.CatHttpRequestFilter.doFilter(CatHttpRequestFilter.java:45)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at com.elab.log.filter.HttpCatCrossFliter.doFilter(HttpCatCrossFliter.java:75)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at com.alibaba.arms.filter.EagleEyeFilter.doFilter(EagleEyeFilter.java:24)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)ts=2020-03-16 19:31:35;thread_name=http-nio-5314-exec-16;id=f6;is_daemon=true;priority=5;TCCL=org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedWebappClassLoader@781d050@java.lang.System.gc()at com.elab.core.utils.DateUtils.stringToDate(DateUtils.java:358)at com.elab.marketing.auth.service.impl.AdviserDispatchImpl.dispatch(AdviserDispatchImpl.java:162)at com.elab.marketing.auth.service.impl.AdviserDispatchImpl.dispatch(AdviserDispatchImpl.java:86)at com.elab.marketing.auth.service.impl.AdviserDispatchImpl$$FastClassBySpringCGLIB$$d0a51ab4.invoke(<generated>:-1)at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85)at com.elab.log.asepct.CatAspect.aroundMethod(CatAspect.java:65)at com.elab.marketing.auth.config.aspect.ServiceAspectBean.around(ServiceAspectBean.java:47)at sun.reflect.GeneratedMethodAccessor172.invoke(null:-1)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:629)at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:618)at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)at com.elab.marketing.auth.service.impl.AdviserDispatchImpl$$EnhancerBySpringCGLIB$$6e910ff2.dispatch(<generated>:-1)at sun.reflect.GeneratedMethodAccessor2519.invoke(null:-1)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at com.elab.log.filter.CatHttpRequestFilter.doFilter(CatHttpRequestFilter.java:45)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at com.elab.log.filter.HttpCatCrossFliter.doFilter(HttpCatCrossFliter.java:75)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at com.alibaba.arms.filter.EagleEyeFilter.doFilter(EagleEyeFilter.java:24)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:748)
我这里出现了两次gc,根据链路去查看了相关源码,发现不知道是谁弄了一个工具类,try catch异常中加入的system.gc。真让人头大
具体代码:
/*** 将Date对象类型转化为指定的格式字符串** @param date<Date>日期* @param format<String>格式* @return String*/public static String dateToString(Date date, String format) {try {if(date!=null)return new SimpleDateFormat(format).format(date);} catch (Exception e) {e.printStackTrace();System.gc();}return null;}
通过链路发现业务调用的时候还是个for循环,所以会出现System.gc成双成对的触发…
我猜也是为什么System.gc调用300+次数,但是fullgc只有198次,可能连续调用两次和一次没啥区别,但是仅仅只是猜测。很有可能是错误的,有知道的大佬可以指点一下。
不报异常不出现,坑死一堆程序员。
总结一下吧:
- 出现异常可以先通过jstat、jmap等分析一下堆的情况,以及gc情况。
- 通过分析gc日志可以快速定位gc触发的原因,以及堆的变化。
- 如果是System.gc主动触发,可以通过阿里开源的arthas去拦截得到调用链。
虽然结果有点坑爹,但是思路是相通的。
如果有更好的思路以及实践
欢迎留言交流,共同学习。
纯干货:线上出现fullGC次数很多的排查思路以及实践总结相关推荐
- gc就是fullgc吗 major_线上出现fullgc问题如何排查?
1.问题描述 线上出现fullgc报警,每5分钟一次 2.背景知识 1. 程序执行了System.gc() 执行了jmap -histo:live pid命令 在执行minor gc的时候进行的一系列 ...
- 线上服务器内存分析及问题排查
转载自 线上服务器内存分析及问题排查 平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load.cpu.mem.qps.rt等.每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴 ...
- 服务器性能指标(二)-- 线上服务器内存分析及问题排查
服务器性能指标(二)-- 线上服务器内存分析及问题排查 平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load.cpu.mem.qps.rt等.每个指标都有其独特的意义,很多时候在线上出现 ...
- 一次线上服务fullGC原因排查
2017年12月09日 21:39:46 阅读数:384 一.现象 早上九点多又收到了fullGC次数过高的应用监控告警{P1}{故障}JVM Old GC all(#3) full_gc_count ...
- TeaTalk 线上直播倒计时 | 云数据库技术创新研究与实践
随着云计算的发展,数据库上云已经成为趋势,云数据库服务相对于传统数据库在架构.性能与安全等方面都存在着新的挑战. 11月23日,移动云TeaTalk线上沙龙带着满满的干货来了! 本次技术沙龙邀请了移动 ...
- 记一次线上请求偶尔变慢的排查
前言 最近解决了个比较棘手的问题,由于排查过程挺有意思,于是就以此为素材写出了本篇文章. Bug现场 这是一个偶发的性能问题.在每天几百万比交易请求中,平均耗时大约为300ms,但总有那么100多笔会 ...
- 线上CPU100%及应用OOM的排查和解决过程
点击上方☝,轻松关注! 及时获取有趣有料的技术文章 " 最近工作又遇到几次线上告警的问题,排查基本上就是cup100%以及内存OOM问题,再分享一下之前遇到这类问题排查的一些思路和过程,希望 ...
- 阿里Java诊断工具 arthas - 监测线上系统的运行信息、排查程序运行缓慢等问题
一.arthas 上篇文章我们讲解了使用arthas在线上环境排查定位内存占用过大.cpu使用率过高等问题,本篇文章继续使用arthas监测线上系统的运行信息,以及排查程序运行缓慢等问题. 下面是上篇 ...
- 记录一次线上CPU负载过高的排查过程
背景 一大早收到运维同学反馈.线上某台机器cpu的负载达到了97%以上,为了不影响机器上服务的正常运行,急需找到导致负载过高的原因并将负载降到合理的区间. 用到命令 top/uptime:查看负载情况 ...
最新文章
- SpringCloud(第 025 篇)Zuul 路由后面的微服务挂了后,Zuul 提供了一种回退机制来应对熔断处理...
- 2017/National _C_C++_B/2/磁砖样式
- django datetime format 日期格式化
- jquery:TypeError: $(...).on is not a function
- 推荐收藏!图深度学习发展历史、最新进展与应用
- virtio 网络的演化:原始virtio > vhost-net(内核态) > vhost-user(DPDK) > vDPA
- python import包导出变量_Python关于import的实验(10) 利用__init__.py文件将变量和包下的模块作为包的属性...
- 接口监控_从零开始入门 K8s | 可观测性:监控与日志
- RESTful规范1
- 抖音上python有用吗_专栏 | 如何在抖音上找到漂亮小姐姐?这里有个Python抖音机器人...
- c#_delegate_异步调用_BeginInvoke
- c语言圆周率天书解释,c语言天书圆周率的计算及分析.doc
- 点击按钮复制到剪切板
- 如何使用阿里云的NAS云文件存储服务
- 粗柳簸箕细柳斗,谁嫌爬虫男人丑 之 异步协程半秒扒光一本小说
- eclipse指定jsp的默认打开方式
- 学python可以改善思维_基于培养思维能力的Python语言程序设计教学
- 联合证券|滴滴出行即日起恢复!A股嗨了!券商扛起领涨大旗
- 百趣代谢组学文献分享:大麦盐胁迫响应机制的组学分析
- html5 canvas图片缩放,拖拽
热门文章
- 区块链-04-BCT-协议
- sql文字转换全拼_sql汉字转拼音
- linux内核zfs,Linux使用ZFS文件系统
- 如何玩转最近爆火的ChatGPT
- 自己买服务器建网站,自己买服务器建网站
- 高仿贝壳找房之使用陀螺仪移动图片Drawable
- Python Scrapy爬虫中文乱码问题“鎴愬姛”及用chardet解决乱码问题
- HDU4725 SPFA (最短路+层级建图)
- 一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
- 《红楼梦》中人物词频统计