楊龍-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版本上開銷都低??赡懿粶士赡芤餔VM 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) 主動上傳,三個皮匠報告文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知三個皮匠報告文庫(點擊聯系客服),我們立即給予刪除!

溫馨提示:如果因為網速或其他原因下載失敗請重新下載,重復下載不扣分。
客服
商務合作
小程序
服務號
折疊
午夜网日韩中文字幕,日韩Av中文字幕久久,亚洲中文字幕在线一区二区,最新中文字幕在线视频网站