应用系统瓶颈排查和分析的思考-Arthas 实战

简介: 业务应用系统接入流程引擎来处理业务应用的流程执行,流程引擎提供多线程高性能异步化来执行流程元素的执行,但是如何设置流程引擎的线程池线程数执行,以及执行线程数和任务数,应用机器资源使用情况之间的关系如何,目前只能通过接入方的人工经验评估,比较粗泛评估,参数的合理性也很难直观的评估,现通过现有的应用系统默认的参数配置进行问题说明。

作者 | 一啦米

【Arthas 官方社区正在举行征文活动,参加即有奖品拿~点击投稿

背景

业务应用系统接入流程引擎来处理业务应用的流程执行,流程引擎提供多线程高性能异步化来执行流程元素的执行,但是如何设置流程引擎的线程池线程数执行,以及执行线程数和任务数,应用机器资源使用情况之间的关系如何,目前只能通过接入方的人工经验评估,比较粗泛评估,参数的合理性也很难直观的评估,现通过现有的应用系统默认的参数配置进行问题说明。

性能监控

查看 CPU 核数

应用机器的配置是 2 核 CPU 配置:

1.png

查看应用机器的负载情况

应用程序的近 15 分钟内的负载严重的超载(平均超出 CPU 执行的 10 倍之多),应用程序对应的 CPU 和 MEM 的利用率都很高,按照本次单机模拟线上的流量(QPS:10) 不至于出现如此的负载情况吧。

2.png

查看应用机器的综合统计

CPU 运行队列中也严重的堵筛(Procs列中指标),应用的 CPU 有效利用率其实并不算太高(US+SY),但是系统出现了严重的 CS(上下文切换),配合 BI,BO 执行,也间接反馈出一些端倪,具体反馈到应用程序中,还需要进一步分析。

3.png

查看应用服务(PID=512)的进程 CPU 执行情况

4.png

5.png

6.png

查看应用机器的磁盘 IO 使用情况

7.png

8.png

应用系统的线程统计概要

应用系统中居然有如此多的线程(1285),应用系统接入流程 SDK 中的线程池数据设置也不会超过80个线程,为何有如何大的偏差,考虑到应用系统中还存在 RPC,kafka 等相关的技术栈,对于应用系统的线程分布还需要进一步的分析。

9.png

应用系统执行 dashboard

10.png

GC 回收线程监控统计

11.png

应用系统线程执行栈的统计

12.png

13.png

14.png

阻塞线程 ThreadDump 信息

15.png

org.apache.log4j.spi.RootLogger is blocking 379 threads.

Pigeon-Server-Request-Processor-46-thread-318
Stack Trace is:
java.lang.Thread.State: RUNNABLE
at java.lang.Throwable.printStackTrace(Throwable.java:665)

  • locked <0x000000075332fde8> (a java.io.PrintWriter)
  1. java.lang.Throwable.printStackTrace(Throwable.java:721)

at org.apache.log4j.DefaultThrowableRenderer.render(DefaultThrowableRenderer.java:60)
at org.apache.log4j.spi.ThrowableInformation.getThrowableStrRep(ThrowableInformation.java:87)

  • locked <0x000000074ae96550> (a org.apache.log4j.spi.ThrowableInformation)
  1. org.apache.log4j.spi.LoggingEvent.getThrowableStrRep(LoggingEvent.java:413)

at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:313)
at org.apache.log4j.WriterAppender.append(WriterAppender.java:162)
at com.dianping.combiz.misc.ExtendedConsoleAppender.append(ExtendedConsoleAppender.java:82)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)

  • eliminated <0x000000075f880030> (a com.dianping.combiz.misc.ExtendedConsoleAppender)
  1. com.dianping.combiz.misc.ExtendedConsoleAppender.doAppend(ExtendedConsoleAppender.java:75)
  • locked <0x000000075f880030> (a com.dianping.combiz.misc.ExtendedConsoleAppender)
  1. org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)

at org.apache.log4j.Category.callAppenders(Category.java:206)
- locked <0x000000075ed2bd58> (a org.apache.log4j.spi.RootLogger)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.log(Category.java:856)
at org.slf4j.impl.Log4jLoggerAdapter.error(Log4jLoggerAdapter.java:576)
at com.meituan.mafka.client.producer.DefaultProducerProcessor.doSend(DefaultProducerProcessor.java:832)
at com.meituan.mafka.client.producer.DefaultProducerProcessor.sendMessage(DefaultProducerProcessor.java:603)
at com.meituan.mafka.client.producer.DefaultProducerProcessor.sendMessage(DefaultProducerProcessor.java:584)
at com.meituan.mafka.client.producer.DefaultProducerProcessor.sendMessage(DefaultProducerProcessor.java:567)
at com.meituan.mafka.client.producer.DefaultProducerProcessor.sendMessage(DefaultProducerProcessor.java:562)
at com.dianping.poi.flowcenter.mq.WorkflowEventMQProducer.sendSyncMessage(WorkflowEventMQProducer.java:98)
at com.dianping.poi.flowcenter.WorkflowEngine.createFlowInstance(WorkflowEngine.java:642)
at com.dianping.poi.flowcenter.WorkflowEngine.startWorkflow0(WorkflowEngine.java:560)
at com.dianping.poi.flowcenter.WorkflowEngine.startWorkflow(WorkflowEngine.java:504)
at com.dianping.poi.mainflow.clearengine.engine.create.impl.CreateWorkflowServiceImpl.createWorkflow(CreateWorkflowServiceImpl.java:66)
at com.dianping.poi.mainflow.core.business.WorkflowBusiness.createWorkflow(WorkflowBusiness.java:277)
at com.dianping.poi.mainflow.core.business.WorkflowBusiness.createWorkflow(WorkflowBusiness.java:183)
at com.dianping.poi.mainflow.core.business.WorkflowBusiness.createWorkflow(WorkflowBusiness.java:176)
at com.dianping.poi.mainflow.core.business.WorkflowBusinessFastClassBySpringCGLIBf3bb47a4.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
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:671)
at com.dianping.poi.mainflow.core.business.WorkflowBusinessEnhancerBySpringCGLIBe721a2aa.createWorkflow()
at com.dianping.poi.mainflow.update.biz.business.MainUpdateFlowBusiness.update(MainUpdateFlowBusiness.java:220)
at com.dianping.poi.mainflow.update.biz.business.MainUpdateFlowBusiness.update(MainUpdateFlowBusiness.java:179)
at com.dianping.poi.mainflow.feedback.biz.serviceImpl.FeedbackForPoiServiceImpl.dpFeedbackBase(FeedbackForPoiServiceImpl.java:1233)
at com.dianping.poi.mainflow.feedback.biz.serviceImpl.FeedbackForPoiServiceImpl.dpTerminalFeedback(FeedbackForPoiServiceImpl.java:486)
at sun.reflect.GeneratedMethodAccessor144.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.dianping.pigeon.remoting.provider.service.method.ServiceMethod.invoke(ServiceMethod.java:193)
at com.dianping.pigeon.remoting.provider.process.filter.BusinessProcessFilter.invoke(BusinessProcessFilter.java:79)
at com.dianping.pigeon.remoting.provider.process.filter.BusinessProcessFilter.invoke(BusinessProcessFilter.java:34)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.GatewayProcessFilter.invoke(GatewayProcessFilter.java:242)
at com.dianping.pigeon.remoting.provider.process.filter.GatewayProcessFilter.invoke(GatewayProcessFilter.java:51)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.SecurityFilter.invoke(SecurityFilter.java:31)
at com.dianping.pigeon.remoting.provider.process.filter.SecurityFilter.invoke(SecurityFilter.java:15)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.GenericProcessFilter.invoke(GenericProcessFilter.java:41)
at com.dianping.pigeon.remoting.provider.process.filter.GenericProcessFilter.invoke(GenericProcessFilter.java:24)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.ExceptionProcessFilter.invoke(ExceptionProcessFilter.java:44)
at com.dianping.pigeon.remoting.provider.process.filter.ExceptionProcessFilter.invoke(ExceptionProcessFilter.java:27)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.ContextTransferProcessFilter.invoke(ContextTransferProcessFilter.java:43)
at com.dianping.pigeon.remoting.provider.process.filter.ContextTransferProcessFilter.invoke(ContextTransferProcessFilter.java:28)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.WriteResponseProcessFilter.invoke(WriteResponseProcessFilter.java:36)
at com.dianping.pigeon.remoting.provider.process.filter.WriteResponseProcessFilter.invoke(WriteResponseProcessFilter.java:26)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.TrafficRecordFilter.invoke(TrafficRecordFilter.java:34)
at com.dianping.pigeon.remoting.provider.process.filter.TrafficRecordFilter.invoke(TrafficRecordFilter.java:14)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.InnerTracerFilter.invoke(InnerTracerFilter.java:29)
at com.dianping.pigeon.remoting.provider.process.filter.InnerTracerFilter.invoke(InnerTracerFilter.java:15)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.MonitorProcessFilter.invoke(MonitorProcessFilter.java:101)
at com.dianping.pigeon.remoting.provider.process.filter.MonitorProcessFilter.invoke(MonitorProcessFilter.java:35)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.TracerFilter.invoke(TracerFilter.java:37)
at com.dianping.pigeon.remoting.provider.process.filter.TracerFilter.invoke(TracerFilter.java:15)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.ProviderContextFilter.invoke(ProviderContextFilter.java:28)
at com.dianping.pigeon.remoting.provider.process.filter.ProviderContextFilter.invoke(ProviderContextFilter.java:18)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.threadpool.RequestThreadPoolProcessor$2.call(RequestThreadPoolProcessor.java:254)
at com.dianping.pigeon.remoting.provider.process.threadpool.RequestThreadPoolProcessor$2.call(RequestThreadPoolProcessor.java:243)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:

  • <0x00000007ab2b6228> (a java.util.concurrent.ThreadPoolExecutor$Worker)

Pigeon 阻塞线程 ThreadDump 信息

16.png

priority:5 - threadId:0x00007fa599636000 - nativeId:0x2ec8 - nativeId (decimal):11976 - state:BLOCKED
stackTrace:
java.lang.Thread.State: BLOCKED (on object monitor)
at deps.redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:207)
at deps.redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:47)
at deps.redis.clients.jedis.Protocol.process(Protocol.java:204)
at deps.redis.clients.jedis.Protocol.read(Protocol.java:271)
at deps.redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:305)
at deps.redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:236)
at deps.redis.clients.jedis.BinaryJedis.hget(BinaryJedis.java:788)
at deps.redis.clients.jedis.BinaryJedisCluster$13.execute(BinaryJedisCluster.java:202)
at deps.redis.clients.jedis.BinaryJedisCluster$13.execute(BinaryJedisCluster.java:199)
at deps.redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:64)
at deps.redis.clients.jedis.JedisClusterCommand.runBinary(JedisClusterCommand.java:41)
at deps.redis.clients.jedis.BinaryJedisCluster.hget(BinaryJedisCluster.java:199)
at com.dianping.squirrel.client.impl.redis.RedisStoreClientImpl$41.excute(RedisStoreClientImpl.java:1022)
at com.dianping.squirrel.client.impl.AbstractStoreClient$MonitorCommand.run(AbstractStoreClient.java:1066)
at com.dianping.squirrel.client.impl.redis.RedisStoreClientImpl.hget(RedisStoreClientImpl.java:1018)
at com.dianping.poi.mainflow.core.redisdao.TimestampRedisDao.getUpdateTime(TimestampRedisDao.java:18)
at com.dianping.poi.mainflow.common.RefreshableCache.checkUpdate(RefreshableCache.java:99)

  • locked <0x00000007623197a0> (a com.dianping.poi.mainflow.core.cache.FlowTemplateRuleCache)
  1. com.dianping.poi.mainflow.common.RefreshableCache.getValue(RefreshableCache.java:53)

at com.dianping.poi.mainflow.common.RefreshableCache.getValue(RefreshableCache.java:43)
at com.dianping.poi.mainflow.core.business.WorkflowBusiness.getTemplateRule(WorkflowBusiness.java:160)
at com.dianping.poi.mainflow.core.business.WorkflowBusiness.setTemplateByWorkflow(WorkflowBusiness.java:134)
at com.dianping.poi.mainflow.core.business.WorkflowBusiness.createWorkflow(WorkflowBusiness.java:253)
at com.dianping.poi.mainflow.core.business.WorkflowBusiness.createWorkflow(WorkflowBusiness.java:183)
at com.dianping.poi.mainflow.core.business.WorkflowBusiness.createWorkflow(WorkflowBusiness.java:176)
at com.dianping.poi.mainflow.core.business.WorkflowBusinessFastClassBySpringCGLIBf3bb47a4.invoke()
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
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:671)
at com.dianping.poi.mainflow.core.business.WorkflowBusinessEnhancerBySpringCGLIBe721a2aa.createWorkflow()
at com.dianping.poi.mainflow.update.biz.business.MainUpdateFlowBusiness.update(MainUpdateFlowBusiness.java:220)
at com.dianping.poi.mainflow.update.biz.business.MainUpdateFlowBusiness.update(MainUpdateFlowBusiness.java:179)
at com.dianping.poi.mainflow.feedback.biz.serviceImpl.FeedbackForPoiServiceImpl.dpFeedbackBase(FeedbackForPoiServiceImpl.java:1233)
at com.dianping.poi.mainflow.feedback.biz.serviceImpl.FeedbackForPoiServiceImpl.dpTerminalFeedback(FeedbackForPoiServiceImpl.java:486)
at sun.reflect.GeneratedMethodAccessor144.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.dianping.pigeon.remoting.provider.service.method.ServiceMethod.invoke(ServiceMethod.java:193)
at com.dianping.pigeon.remoting.provider.process.filter.BusinessProcessFilter.invoke(BusinessProcessFilter.java:79)
at com.dianping.pigeon.remoting.provider.process.filter.BusinessProcessFilter.invoke(BusinessProcessFilter.java:34)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.GatewayProcessFilter.invoke(GatewayProcessFilter.java:242)
at com.dianping.pigeon.remoting.provider.process.filter.GatewayProcessFilter.invoke(GatewayProcessFilter.java:51)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.SecurityFilter.invoke(SecurityFilter.java:31)
at com.dianping.pigeon.remoting.provider.process.filter.SecurityFilter.invoke(SecurityFilter.java:15)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.GenericProcessFilter.invoke(GenericProcessFilter.java:41)
at com.dianping.pigeon.remoting.provider.process.filter.GenericProcessFilter.invoke(GenericProcessFilter.java:24)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.ExceptionProcessFilter.invoke(ExceptionProcessFilter.java:44)
at com.dianping.pigeon.remoting.provider.process.filter.ExceptionProcessFilter.invoke(ExceptionProcessFilter.java:27)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.ContextTransferProcessFilter.invoke(ContextTransferProcessFilter.java:43)
at com.dianping.pigeon.remoting.provider.process.filter.ContextTransferProcessFilter.invoke(ContextTransferProcessFilter.java:28)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.WriteResponseProcessFilter.invoke(WriteResponseProcessFilter.java:36)
at com.dianping.pigeon.remoting.provider.process.filter.WriteResponseProcessFilter.invoke(WriteResponseProcessFilter.java:26)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.TrafficRecordFilter.invoke(TrafficRecordFilter.java:34)
at com.dianping.pigeon.remoting.provider.process.filter.TrafficRecordFilter.invoke(TrafficRecordFilter.java:14)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.InnerTracerFilter.invoke(InnerTracerFilter.java:29)
at com.dianping.pigeon.remoting.provider.process.filter.InnerTracerFilter.invoke(InnerTracerFilter.java:15)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.MonitorProcessFilter.invoke(MonitorProcessFilter.java:101)
at com.dianping.pigeon.remoting.provider.process.filter.MonitorProcessFilter.invoke(MonitorProcessFilter.java:35)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.TracerFilter.invoke(TracerFilter.java:37)
at com.dianping.pigeon.remoting.provider.process.filter.TracerFilter.invoke(TracerFilter.java:15)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.filter.ProviderContextFilter.invoke(ProviderContextFilter.java:28)
at com.dianping.pigeon.remoting.provider.process.filter.ProviderContextFilter.invoke(ProviderContextFilter.java:18)
at com.dianping.pigeon.remoting.provider.process.ProviderProcessHandlerFactory$1.handle(ProviderProcessHandlerFactory.java:99)
at com.dianping.pigeon.remoting.provider.process.threadpool.RequestThreadPoolProcessor$2.call(RequestThreadPoolProcessor.java:254)
at com.dianping.pigeon.remoting.provider.process.threadpool.RequestThreadPoolProcessor$2.call(RequestThreadPoolProcessor.java:243)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Locked ownable synchronizers:
<0x0000000735ab3bc0> (a java.util.concurrent.ThreadPoolExecutor$Worker)

17.png

问题说明

  1. 通过对应用系统的模拟上线应用运行状态分析,目标找出系统的瓶颈点,以及通过对应用系统的资源使用情况来评估应用系统的相关参数设置是否合理;
  2. 如何根据应用系统的运行时的性能监控,动态的评估应用系统潜在的瓶颈点,以及预测此瓶颈点对应用的影响,是否可以动态的调配相关应用参数,来自适用应用系统性能,充分利用应用系统资源(CPU,Memory,IO)等,结合应用系统的任务使用特性(CPU 密集型,IO 密集型,MiX 混合性)以及多个线程池任务执行特性,是否能够动态预测。

 

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 虚拟机诊断利器

背景 最近学习Java字节码过程中遇到了反射&#xff0c;有段代码是这样的&#xff1a; package com.example.classstudy;import java.lang.reflect.Method;/*** author TY*/ public class ReflectionTest {private static int count 0;public static void foo() {new Excepti…

IDC报告:中国公有云服务市场同比增长49.7%,领跑全球

IDC最新发布的《全球及中国公有云服务市场&#xff08;2020年&#xff09;跟踪》报告显示&#xff0c;2020年全球公有云服务整体市场规模&#xff08;IaaS/PaaS/SaaS&#xff09;达到3,124.2亿美元&#xff0c;同比增长24.1%&#xff0c;中国公有云服务整体市场规模达到193.8亿…

是谁在调用我?使用 arthas+jprofiler 做复杂链路分析

简介&#xff1a; Arthas 是阿里巴巴开源的应用诊断利器&#xff0c;提供了 profiler 命令&#xff0c;可以生成热点火焰图。通过采样录制调用链路来做性能分析&#xff0c;极大提升了线上排查性能问题的效率。 作者 | 羽涅 阿里巴巴 CCO 技术部技术专家&#xff0c;承担 CCO …

Arthas 初探--安装初步适用

简介&#xff1a; 由于在项目中遇到一种情况&#xff0c;某段代码在进行单元测试和在 tomcat 容器中运行的性能相差数百倍&#xff0c;因此需要分析在不同环境下某个方法执行的具体时间&#xff0c;从而确定问题。Arthas 可以做到无侵入的监控应用远行情况。 作者 | agmtopy 由…

用 Arthas 神器来诊断 HBase 异常进程

1. 异常突起 HBase 集群的某一个 RegionServer 的 CPU 使用率突然飙升到百分之百&#xff0c;单独重启该 RegionServer 之后&#xff0c;CPU 的负载依旧会逐渐攀上顶峰。多次重启集群之后&#xff0c;CPU 满载的现象依然会复现&#xff0c;且会持续居高不下&#xff0c;慢慢地…

赠书 | 如何部署一个Knative Service

我们以一个go语言编写的程序代码为例&#xff0c;创建一个简单的Web服务&#xff0c;当该服务接收到HTTP GET请求时会根据环境变量TARGET传递的内容向response输出Hello $TATGET! 内容。1. 创建一个文件名为helloworld.go的文件。程序源码如下&#xff1a;package mainimport (…

一文读懂阿里云网络-SLB负载均衡新姿势

简介&#xff1a; 简介&#xff1a;负载均衡是洛神网络中最为关键的网元之一&#xff0c;其担负着网络流量分发的重任&#xff0c;有了它之后&#xff0c;用户在浏览应用的时候才能体会到“丝般顺滑”的感觉。欢迎免费体验SLB性能保障型负载均衡产品&#xff01; 通过此文&…

聊聊缓存机制:双写兜兜转转,又回到了串行化

来源 | moon聊技术责编 | 寇雪芹头图 | 下载于ICphoto什么是双写&#xff1f;这个很好理解&#xff0c;双写就是说&#xff0c;一份数据在数据库存一份&#xff0c;在缓存中也存一份&#xff0c;给缓存一个过期时间&#xff0c;当读不到缓存时从数据库读出来然后写入缓存。为什…

如何基于大数据及AI平台实现业务系统实时化?

简介&#xff1a; 后疫情时代的新社会模式及经济形态必将催生出新的商业模式&#xff0c;在线业务及相关应用场景的流量呈现井喷式发展&#xff0c;常规的离线系统及离线机器学习平台已无法满足业务发展要求。 作者&#xff1a;高旸&#xff08;吾与&#xff09;&#xff0c;阿…

基于 Flink 的典型 ETL 场景实现

简介&#xff1a; 本文将从数仓诞生的背景、数仓架构、离线与实时数仓的对比着手&#xff0c;综述数仓发展演进&#xff0c;然后分享基于 Flink 实现典型 ETL 场景的几个方案。 作者&#xff1a;买蓉 美团点评高级技术专家整理&#xff1a;赵阳&#xff08;Flink 社区志愿者&…

商用密码技术与应用创新的方向是什么?安全牛发布《商密报告》全面揭晓

编辑 | 宋慧 出品 | CSDN云计算 头图 | 付费下载于东方IC 2021年4月22日&#xff0c;由安全牛举办的2021商用密码技术创新研讨会暨《2021商用密码创新应用指南》&#xff08;以下简称《商密报告》&#xff09;发布会在北京举行。 北京谷安天下科技有限公司副总裁贺晓辉在研讨…

Flink 源码 | 自定义 Format 消费 Maxwell CDC 数据

Flink 1.11 最重要的 Feature —— Hive Streaming 之前已经和大家分享过了&#xff0c;今天就和大家来聊一聊另一个特别重要的功能 —— CDC。 CDC概述 何为CDC&#xff1f;Change Data Capture&#xff0c;将数据库中的’增’、’改’、’删’操作记录下来。在很早之前是通…

阿里巴巴大数据实践:大数据建设方法论OneData

来源&#xff1a;数智化转型俱乐部 面对爆炸式增长的数据&#xff0c;如何建设高效的数据模型和体系&#xff0c;对这些数据进行有序和有结构地分类组织和存储&#xff0c;避免重复建设和数据不一致性&#xff0c;保证数据的规范性&#xff0c;一直是大数据系统建设不断追求的…

干货!一文搞懂无状态服务

来源 | 机智的程序员小熊责编 | 寇雪芹头图 | 下载于视觉中国事故的发生是量的积累的结果&#xff0c;任何事情都没有表面看起来那么简单&#xff0c;在软件运行的过程中&#xff0c;随着用户量的增加&#xff0c;不考虑高可用&#xff0c;迟早有一天会发生故障&#xff0c;不得…

后疫情时代,这家在线教育机构如何乘“云”而上

简介&#xff1a; 阿里云依托于云计算的基础设施特性&#xff0c;能够帮助教育机构避免业务侧重复投入、提高资源利用率、降低开发和运维成本&#xff0c;使洋葱学院激发出更大的活力&#xff0c;在后疫情时代得到更多用户的青睐 新冠疫情让现代人类和国际社会经历了大规模的隔…

2021全球权威AI性能竞赛MLPerf最新榜单: 浪潮获18项冠军几近半壁江山

4月22日&#xff0c;全球权威AI基准评测MLPerf公布2021年最新榜单&#xff0c;在全部有效41个项目中&#xff0c;浪潮获得18项性能第一&#xff0c;斩获几近半数冠军。 MLPerf™由图灵奖得主大卫•帕特森 &#xff08;David Patterson&#xff09;联合谷歌、斯坦福、哈佛大学…

NFS文件锁一致性设计原理解析

简介&#xff1a; 在存储系统中&#xff0c; NFS&#xff08;Network File System&#xff0c;即网络文件系统&#xff09;是一个重要的概念&#xff0c;已成为兼容POSIX语义的分布式文件系统的基础。它允许在多个主机之间共享公共文件系统&#xff0c;并提供数据共享的优势&am…

作为工程师,你真的了解无服务器?

译者 | 王欢来源 | 分布式实验室头图 | 下载于ICphoto最近&#xff0c;我在YouTube上看了一个非常出色的开发人员的视频。它的标题是“无服务器毫无意义”。虽然我非常喜欢该视频&#xff0c;但也不敢确定作者关于无服务器的观点是否完全正确&#xff0c;因此我想在本文中进行讨…

recaf反编译 java jar包

文章目录1. 获取方式2. 软件运行3. 导入jar4. 模式切换5. 字符串混淆解析1. 获取方式 添加QQ群获取197453088 2. 软件运行 java -jar recaf-2.21.13.jar3. 导入jar 4. 模式切换 5. 字符串混淆解析 如何解密Allatori 混淆的字符串 Java ALLATORIxDEMO

分布式锁在存储系统中的技术实践

简介&#xff1a; 阿里云存储提供了完整的分布式锁解决方案&#xff0c;经过了阿里云众多云产品宝贵的业务场景中长期锤炼&#xff0c;稳定高可靠&#xff0c;且提供了多种语言的SDK选择&#xff0c;甚至是RESTful集成方案。 1 背景 针对共享资源的互斥访问历来是很多业务系统…