上海品茶

杨龙-Java性能剖析技术详解-Final.pdf

编号:136989 PDF 38页 5.04MB 下载积分:VIP专享
下载报告请您先登录!

杨龙-Java性能剖析技术详解-Final.pdf

1、Java性能剖析技术详解演讲人:杨龙Alibaba DragonwellCoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023性能剖析简介性能剖

2、析工具概览Java Flight Recorderasync-profiler性能剖析实践CONTENT目录CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJava

3、Week 2023性能剖析简介1CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023性能剖析是一种为了改善程序性能,从运行状态的程序中收集数据

4、并分析的方法常见的性能维度有:Time、CPU、Memory Allocation、IO、Lock等CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek

5、 2023性能剖析工具概览2CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CounterEventsInstrumentationSam

6、plingjstat hsperfdataVisualVM JMXLoggingasync-profiler JVMTIJFR JVM InternalJVMTI async-profilerAPM JavaagentJFR JVM Internal jstack async-profiler JVMTIasync-profiler JVM APIparca eBPFJFR JVM Internal VisualVM JMX safepoint biasednotsafepoint biasedCoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 202

7、3CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023Java Flight Recorder3CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJa

8、vaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR历史JRockit Flight RecorderBEA SystemsOracle acquired SunrebrandedJava Flight RecorderOracleOpen source JFROpenJDK 11A

9、libaba+RedHatBackport JFR toOpenJDK 8u2622010 2008 Oracle acquired BEA20182020JFR StreamingJDK 142020CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek

10、 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR使用方式-创建记录启动参数Command LineJava Code-XX:StartFlightRecording=duration=10s,filename=/path/to/profile.jfr,settings=profile-XX:FlightRecorderOptions=memorysize=10m,stackdepth=64-XX:+LogJFR/Java 8-Xlog:jfr=debug/java 11-XX:-FlightRecorder/禁用JFR$JA

11、VA_HOME/bin/jcmd 16014 JFR.start name=test settings=profile$JAVA_HOME/bin/jcmd 16014 JFR.check$JAVA_HOME/bin/jcmd 16014 JFR.configure stackdepth=64$JAVA_HOME/bin/jcmd 16014 JFR.dump name=test filename=/tmp/profile.jfr$JAVA_HOME/bin/jcmd 16014 JFR.stop name=testpublic static void main(String args)thr

12、ows Exception Configuration recordingConfig=Configuration.getConfiguration(default);Recording recording=new Recording(recordingConfig);recording.setName(test);recording.setMaxAge(Duration.ofSeconds(120);recording.setMaxSize(1024*1024);recording.start();Thread.sleep(1000);Path p=Files.createTempFile(

13、profile,.jfr).getFileName();recording.dump(p);recording.stop();CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 202

14、3CoreJavaWeek 2023JFR使用方式-解析public static void main(String args)throws Exception Path p=Paths.get(/path/to/profile.jfr);try(RecordingFile file=new RecordingFile(p)while(file.hasMoreEvents()RecordedEvent e=file.readEvent();String eventName=e.getEventType().getName();System.out.println(eventName);$JAV

15、A_HOME/bin/jfr summary profile.jfr$JAVA_HOME/bin/jfr print-events jdk.ExecutionSample profile.jfrJDK Mission ControlCommand LineJava CodeCoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWe

16、ek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR整体设计EventRuntimeCompilerGCJFRJava APIEventEventEventThread BufferGlobal BufferGlobal BufferGlobal BufferGlobal BufferGlobal BufferGlobal Bufferrecording.jfrChunk 1Chunk 2Chunk 3Chunk NHeaderMetadataConstan

17、t PoolEventsCoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR事件类型概览 JFR Recording JFR Setti

18、ng Allocation File IO Socket IO Lock Wait Thread Start Thread Sleep JVM Information Class Loading Code Cache Compiler Flag GC Profiling Safepoint VM Operation Memory Network Process CPU Load Thread CPU Load OS Information Setting Flag Thread Start CPU Load GC Socket IO Compiling Safepoint VM Operati

19、on Lock Wait Thread Execution Thread Dump Flight RecorderJava ApplicationJVMOperating SystemInstant EventDuration EventSample EventCoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 202

20、3CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR-CPU热点Sample 1a()b()Sample 2a()c()Sample 3a()b()Sample 4a()b()1 signalJfrThreadSamplerJava Thread2 signal handler:block current thread3 walk stack4 JFR eventCoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023Cor

21、eJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR-内存申请热点Java ThreadTLABShared SpaceObjectAllocationInNewTLABEvent ThreadStart TimeAllocation Size

22、Object classStack TraceTLAB SizeObjectAllocationOutsideTLABEvent ThreadStart TimeAllocation SizeObject classStack Trace在内存申请很频繁的应用中事件数量很多,JFR文件较大每个事件都要生成方法栈,开销偏大OpenJDK 16,JFR实现了新内存剖析功能,可控制事件数量和开销 https:/bugs.openjdk.org/browse/JDK-8257602 ObjectAllocationSample如果未使用TLAB(-XX:-UseTLAB),则无法剖析CoreJavaW

23、eek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR-内存泄露剖析Java ThreadTLABpriority queue大堆(超过50G)Heapdu

24、mp很慢,也有可能无法打开Heapdump文件JDK 10,JFR新增了OldObjectSample事件,旨在解决上述问题,不用Heapdump也能定位根因week refGCLeakOldObjectSampleEvent ThreadStart TimeDurationArray ElementsHeap UsageObject Stack TraceGC RootOldObjectSampleEvent ThreadStart TimeDurationArray ElementsHeap UsageObject Stack TraceGC RootCoreJavaWeek 2023Co

25、reJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR-锁热点剖析ObjectMonitor:enter()EventJavaMonitorEnter event;do_ent

26、er();if(event.should_commit()mit();bool should_commit()return is_enabled();void commit()set_endtime(JfrTicks:now();if(_end_time-_start_time)=JfrEventSetting:threshold)write_event();true true 20 msUnsafe_Park()EventThreadPark event;do_park();if(event.should_commit()mit();true true 20 msvoid synchroni

27、zed .reentrantLock.lock()JavaMonitorEnterEvent ThreadStart TimeDurationMonitor AddressMonitor ClassPrevious Monitor OwnerThreadParkEvent ThreadStart TimeDurationCoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023Cor

28、eJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR-Socket/File IO 热点剖析jcmd 12197 JFR.start name=testjdk.jfr.internal.instrument.FileChannelImplInstrumentor.javajdk.jfr.internal.instrument.FileInputStreamInstrumentor.javajdk.jfr.int

29、ernal.instrument.FileOutputStreamInstrumentor.javajdk.jfr.internal.instrument.RandomAccessFileInstrumentor.javajdk.jfr.internal.instrument.SocketChannelImplInstrumentor.javajdk.jfr.internal.instrument.SocketInputStreamInstrumentor.javajdk.jfr.internal.instrument.SocketOutputStreamInstrumentor.java第一

30、次启动JFR有可能会引起JIT退优化,导致应用性能下降JIInstrumentationTarget(sun.nio.ch.SocketChannelImpl)final class SocketChannelImplInstrumentor JIInstrumentationMethod public int read(ByteBuffer dst)throws IOException SocketReadEvent event=SocketReadEvent.EVENT.get();if(!event.isEnabled()return read(dst);int bytesRead=0;

31、try event.begin();bytesRead=read(dst);finally event.end();if(event.shouldCommit()mit();event.reset();return bytesRead;CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek

32、 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR性能开销 Test:Benchmark OS:Linux version 3.10.0-1160.80.1.el7.x86_64,gcc version 4.8.5 CPU:vCore 24,x86_64,Intel(R)Xeon(R)Platinum 8369B CPU 2.70GHz Memory:24G JDK:OpenJDK 64-Bit Server VM(build 25.362-b08,mixed mode)Flags:-XX:+

33、UseConcMarkSweepGC-Xmx10g-Xmn5g-XX:MaxMetaspaceSize=512m-Xloggc:gc.log-XX:+PrintGCDetails-XX:+PrintGCDateStamps -XX:-UseMembar/-XX:+UseMembar Standard profiling recording using the default settings 2%.https:/ 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023Co

34、reJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR最佳实践 JDK 8,如果Java线程数较多(比如500以上),CPU热点剖析可能开销比较大,且和线程数正相关;JDK 8和JDK 11,内存分配热点剖析的事件数量可能很多,创建事件时爬栈的开销较大,内存分配较快的应用不建议开启 https:/bugs.openjdk.org/browse/

35、JDK-8257602 JDK 11.0.7以前,内存泄露剖析功能可能导致JFR文件体积很大,不建议打开 https:/bugs.openjdk.org/browse/JDK-8225797 第一次开启JFR,有可能会导致JIT退优化,导致应用性能抖动 建议增加-XX:+UseMembar参数切换到更高性能的实现,可规避此问题 https:/bugs.openjdk.org/browse/JDK-8187812(JDK 10开始已经默认打开)CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaW

36、eek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023async-profiler4CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJ

37、avaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023async-profiler使用方式Command LineJava Code CPU热点bash profiler.sh e cpu d 60 f profile.html javapid 内存申请热点bash profiler.sh-alloc 500k d 60 f profile.html ja

38、vapidAsyncProfiler profiler=AsyncProfiler.getInstance(/path/libasyncprofiler.so);profiler.execute(start,jfr=7,event=cpu,interval=10ms,file=profile.html);profiler.stop();java-agentpath:/path/to/libasyncpprofiler.so=start,event=cpu,file=profile.html jar javaagentCoreJavaWeek 2023CoreJavaWeek 2023CoreJ

39、avaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023async-profiler CPU热点剖析Java CodejavaagentJVMCollected Heaplibasyncprofiler.soOperatin

40、g System4 signaljattachBufferJFRTextRuntimeJVMTIJNICompilerJVM API5 ring buffertimersignal handlercallbackHTMLCollapsedJava API2 perf_event_openlib parserHigh PerformanceNo need-XX:+PreserveFramePointerperf_event_open/proc/sys/kernel/perf_event_paranoid 2Container:seccomp enable perf_event_openAsync

41、GetCallTracehttps:/ 670 start89Full Stack TraceKernel+Native+JavaCoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2

42、023CoreJavaWeek 2023async-profiler 内存申请热点剖析push%rbpmov%rsp,%rbpsub$0 xb0,%rsp0 xccnew Object()send_allocation_in_new_tlab()send JFR eventAllocate Object from TLABnew Object()TLAB allocation callbackSIGTRAPAllocate Object from TLABsignal handlerJVMTI GetStackTraceRecord Sample in async-profilersend_a

43、llocation_in_new_tlab()send_allocation_in_new_tlab()ObjectAllocationInNewTLABEvent ThreadStart TimeAllocation SizeObject classStack TraceTLAB SizeInstruction Replace0XCC Software BreakpointJDK 7u40+send_allocation_in_new_tlab()send_allocation_outside_tlab()Need JDK debug symbolsdebuginfo-install-y j

44、ava-1.8.0-openjdkSupport Overhead Control-alloc 500kSupport XX:-UseTLAB on JDK 11JVMTI SampledObjectAllochttps:/openjdk.org/jeps/331JVMTI GetStackTracehttps:/ 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023C

45、oreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023async-profiler 墙钟热点剖析是CPU热点剖析的有力补充Running+Blocking+SleepingOverhead ControlThread FilterTHREADS_PER_TICK=8Java ThreadTimerSample 1a()b()Sample 2a()c()Sample 3a()b()b()Signal handlerJVM APICoreJavaWee

46、k 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023async-profiler 锁争抢热点剖析Support 2 Lock Typessynchronized+j

47、ucsynchronized JVMTIasync-profiler callbackObjectMonitor:enterRecord start timeJVMTIasync-profiler callbackJVMTIdo enterCreate EventJavaMonitorEnterEvent ThreadStart TimeDurationMonitor AddressMonitor ClassPrevious Monitor OwnerRrentrantLock.lock()Record start timeUnsafe.park()Unsafe_Park()Rrentrant

48、Lock.lock()Unsafe.park()Unsafe_Park_Hook()Unsafe_Park()Create EventJVMTIThreadParkEvent ThreadStart TimeDurationCoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023C

49、oreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023async-profiler 性能开销 Test:Benchmark OS:5.4.0-90-generic#101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux CPU:16 cores,Intel(R)Xeon(R)Platinum 8369B CPU 2.70GHz Memory:64G JDK:1.8.0_312Async Profiler:2.6 Flags

50、:-XX:+UseConcMarkSweepGC-Xmx10g-Xmn5g-XX:MaxMetaspaceSize=512m-Xloggc:gc.log-XX:+PrintGCDetails-XX:+PrintGCDateStampsCoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek

51、2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023JFR 和 async-profiler 的对比async-profilerJava Flight Recorder数据丰富度包含最常用功能丰富程度高CPU支持内核+Native+Java栈,需要权限包含所有线程(Java+GC+Compiler+VM)在所有Java版本上开销都低栈可能不准可能引起JVM Crash支持仅Java栈,开箱即用仅Java线程在JDK8上开销较高栈比较准确稳定内存申请支持事件数量可控,开销可控依赖JDK调试符号有可能导致J

52、VM crash支持8和11上,事件数量不可控,开销不可控开箱即用社区在不断维护内存泄露剖析支持支持在JDK8上JFR文件体积较大,11上已修复锁争抢热点支持支持文件/Socket IO无原生支持支持有可能引起JIT性能退化墙钟支持无原生支持CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaW

53、eek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023性能剖析实践5CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek

54、2023CoreJavaWeek 2023CoreJavaWeek 2023单次剖析perf+perf-map-agentInstall perfInstall perf-map-agentSet-XX:+PreserveFramePointerProfile Java Dump symbolsGenerate Mixed-Mode Flame Graphasync-profilerInstall async-profilerProfile JavaGenerate Mixed-Mode Flame GraphJava Flight RecorderProfile JavaRead JFR(J

55、DK Mission Control)未剖析时没有开销或开销较低 如果未及时触发剖析,有可能错过问题现场 不是连续剖析,没有完整应用性能数据,无法进行程序画像持续性能剖析CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWee

56、k 2023CoreJavaWeek 2023CoreJavaWeek 2023持续性能剖析CollectStorageVisualizeJavaJFR/async-profilerGopprofPHPphpspyeBPFProfilingDatalanguage neutral formatAnalyzerFormatConverterAggregateK/VDatabaseJava Query APIUser End在生产环境低开销的持续记录,支持定位任意时刻性能问题CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWee

57、k 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023depth=0start time=00:00:00duration=60 sdepth=0start time=00:09:00duration=60 sdepth=1start time=00:00:00dur

58、ation=600 s1103 92 9depth=0start time=01:30:00duration=60 sdepth=0start time=01:39:00duration=60 sdepth=1start time=01:30:00duration=600 s1102 9depth=2start time=00:00:00duration=6000 s110depth=0start time=15:00:00duration=60 sdepth=0start time=15:09:00duration=60 sdepth=1start time=15:00:00duration

59、=600 s1102 92 9depth=0start time=16:30:00duration=60 sdepth=0start time=16:39:00duration=60 sdepth=1start time=16:30:00duration=600 s1102 9depth=2start time=15:00:00duration=6000 s110depth=3start time=00:00:00duration=60000 s2 9快速大范围查询depth=0start time=00:00:00duration=60 s2持续性能剖析-聚合存储CoreJavaWeek 2

60、023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023持续性能剖析-和Tracing关联HTTP Load BalancerMicro ServiceAPI Gateway

61、Micro ServiceMicro ServiceMicro ServiceMicro ServiceMicro ServicetracingUserServiceItemServiceSellerServiceOrderServiceDatabaseCacheMsgQueue?CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJa

62、vaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023持续性能剖析-和Tracing关联Request 1Request 2Request 3Sample 1a()b()Sample 2a()c()Sample 3a()b()b()span-1001Sample 1a()c()Sample 1a()b()Sample 3a()Sample 4a()b()Sample 5a()b()b()span-1003Sample 1a()b()Sample 2a()c(

63、)Sample 3a()b()Sample 4a()b()span-1002TracerProfiler ThreadJava Thread 1Java Thread 2span-1001span-1001span-1002span-1002span-1002span-1003span-1003span-1003span-1003CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 20

64、23CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023持续性能剖析-和Tracing关联tracingUserServiceItemServiceSellerServiceOrderServiceDatabaseCacheMsgQueue?span id=4span id=4span id=1span id=2span id=3CoreJavaWeek 2023CoreJavaWeek 2023CoreJav

65、aWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023阿里云 Continuous ProfilerAlibaba Dragonwell+应用实时监控服务ARMS可以方便诊断出CPU和内存申请热点方法比常规工具更准确可以在生产

66、环境持续记录对应用性能影响很小可以帮助提升用户体验降低计算成本和资源占用,节省IT支出未来会支持更多性能维度(Lock、Network)Tracing和Profiling的关联等功能正在研发中CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023

67、CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023总结6CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJava

68、Week 2023性能剖析-简介性能剖析工具-分类和说明Java Flight Recorder-原理、使用、最佳实践async-profiler-原理、使用、最佳实践性能剖析实践-持续性能剖析、和tracing关联CONTENTCoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 20

69、23CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023感谢聆听演讲人:杨龙CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023CoreJavaWeek 2023

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(杨龙-Java性能剖析技术详解-Final.pdf)为本站 (2200) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
客服
商务合作
小程序
服务号
会员动态
会员动态 会员动态:

 set**er 升级为高级VIP 139**80...  升级为至尊VIP

 wei**n_... 升级为标准VIP wei**n_... 升级为高级VIP

wei**n_... 升级为至尊VIP 一朴**P... 升级为标准VIP 

 133**88... 升级为至尊VIP wei**n_...  升级为高级VIP

  159**56... 升级为高级VIP 159**56... 升级为标准VIP 

升级为至尊VIP  136**96... 升级为高级VIP

 wei**n_... 升级为至尊VIP wei**n_... 升级为至尊VIP

 wei**n_... 升级为标准VIP 186**65... 升级为标准VIP

 137**92... 升级为标准VIP  139**06... 升级为高级VIP

130**09... 升级为高级VIP    wei**n_... 升级为至尊VIP

 wei**n_... 升级为至尊VIP wei**n_...  升级为至尊VIP

wei**n_...  升级为至尊VIP 158**33... 升级为高级VIP 

 骑**... 升级为高级VIP wei**n_... 升级为高级VIP  

 wei**n_...  升级为至尊VIP  150**42...  升级为至尊VIP

185**92...  升级为高级VIP  dav**_w...  升级为至尊VIP

 zhu**zh...  升级为高级VIP  wei**n_... 升级为至尊VIP

 136**49... 升级为标准VIP  158**39... 升级为高级VIP

wei**n_... 升级为高级VIP  139**38...  升级为高级VIP 

159**12... 升级为至尊VIP   微**... 升级为高级VIP 

185**23... 升级为至尊VIP    wei**n_... 升级为标准VIP

152**85...  升级为至尊VIP  ask**un 升级为至尊VIP

 136**21...  升级为至尊VIP 微**... 升级为至尊VIP 

135**38...  升级为至尊VIP  139**14... 升级为至尊VIP

138**36... 升级为至尊VIP    136**02... 升级为至尊VIP

 139**63... 升级为高级VIP  wei**n_... 升级为高级VIP 

 Ssx**om 升级为高级VIP  wei**n_... 升级为至尊VIP 

131**90... 升级为至尊VIP   188**13... 升级为标准VIP 

159**90...  升级为标准VIP  风诰 升级为至尊VIP 

 182**81... 升级为标准VIP  133**39...  升级为高级VIP

 wei**n_... 升级为至尊VIP  段**  升级为至尊VIP

 wei**n_... 升级为至尊VIP  136**65...  升级为至尊VIP 

 136**03... 升级为高级VIP wei**n_...  升级为标准VIP 

137**52... 升级为标准VIP   139**61...  升级为至尊VIP

微**... 升级为高级VIP   wei**n_... 升级为高级VIP 

188**25... 升级为高级VIP   微**... 升级为至尊VIP

 wei**n_... 升级为高级VIP wei**n_... 升级为标准VIP

 wei**n_...  升级为高级VIP  wei**n_... 升级为标准VIP 

186**28... 升级为标准VIP  微**... 升级为至尊VIP 

wei**n_...   升级为至尊VIP  wei**n_... 升级为高级VIP 

189**30...   升级为高级VIP 134**70... 升级为标准VIP 

 185**87... 升级为标准VIP   wei**n_... 升级为高级VIP

wei**n_... 升级为至尊VIP  微**...   升级为至尊VIP

wei**n_... 升级为标准VIP  wei**n_... 升级为至尊VIP 

  wei**n_... 升级为标准VIP 132**09... 升级为至尊VIP

麦提 升级为高级VIP   wei**n_...  升级为高级VIP

  wei**n_... 升级为至尊VIP wei**n_... 升级为标准VIP

 wei**n_... 升级为至尊VIP   wei**n_... 升级为标准VIP

wei**n_... 升级为至尊VIP    wei**n_... 升级为标准VIP

182**18...  升级为高级VIP 中**...  升级为至尊VIP

136**77...  升级为标准VIP  wei**n_... 升级为标准VIP