Profil thread menyediakan statistik tingkat thread mengenai waktu CPU dan jumlah thread berdasarkan jenisnya. Fitur ini merekam serta mengagregasi stack metode thread setiap 5 menit untuk merekonstruksi eksekusi kode aktual dan membantu Anda dengan cepat mengidentifikasi masalah terkait thread. Jika Anda melihat pemanfaatan CPU yang tinggi di kluster atau sejumlah besar metode lambat, gunakan profil thread untuk menemukan thread atau metode yang paling banyak mengonsumsi CPU.
Fitur ini saat ini hanya tersedia untuk aplikasi Java.
Prasyarat
Pemantauan Aplikasi ARMS menyediakan halaman detail pemantauan baru bagi pengguna yang menggunakan paket penagihan baru. Untuk informasi selengkapnya tentang paket penagihan baru, lihat Penagihan (Baru).
Jika Anda belum mengaktifkan paket penagihan baru, klik Switch to New Version pada halaman daftar aplikasi.
Agen harus diinstal untuk aplikasi Anda. Untuk informasi selengkapnya, lihat Ikhtisar Integrasi Pemantauan Aplikasi.
Prosedur
-
Masuk ke Konsol ARMS. Di panel navigasi kiri, pilih .
-
Pada halaman Application List, pilih wilayah target di bagian atas lalu klik nama aplikasi Anda.
CatatanIkon pada kolom Language memiliki makna sebagai berikut:
: Aplikasi Java yang terintegrasi dengan pemantauan aplikasi.
: Aplikasi Go yang terintegrasi dengan pemantauan aplikasi.
: Aplikasi Python yang terintegrasi dengan pemantauan aplikasi.-: Aplikasi yang terintegrasi dengan Managed Service for OpenTelemetry.
-
Di bilah navigasi atas, pilih .
Analisis thread
Daftar di sisi kiri halaman Thread Profiling menampilkan semua thread aplikasi, memungkinkan Anda dengan cepat mengidentifikasi thread abnormal berdasarkan CPU time-nya. Setelah memilih thread abnormal, gunakan grafik di sisi kanan untuk menganalisis CPU time dan Number of Threads. Misalnya, periksa apakah jumlah total thread per menit terlalu tinggi.
Untuk thread abnormal apa pun, klik Method Stack untuk melihat stack metode waktu prosesnya dalam periode waktu tertentu. Misalnya, Anda dapat melihat metode yang sesuai dengan thread dalam status BLOCKED. Hal ini membantu Anda mengidentifikasi segmen kode spesifik yang perlu dioptimalkan guna mengurangi pemanfaatan CPU.
ALL: 365194 RUNNABLE: 986 BLOCKED: 87 WAITING: 1498 TIMED_WAITING: 362617
【BLOCKED】81/87(次) - 占比93.10%
at java.lang.Object.wait (Native Method)
at xxx.awaitAvailable (BasicResourcePool.java:1315)
at xxx.prelimCheckoutResource (BasicResourcePool.java:557)
at xxx.checkoutResource (BasicResourcePool.java:477)
at xxx.checkoutPooledConnection (C3P0PooledConnectionPool.java:525)
at xxx.getConnection (AbstractPoolBackedDataSource.java:128)
at xxx.getConnection (PoolingConnectionProvider.java:247)
at xxx.getConnection (DBConnectionManager.java:108)
at xxx.getConnection (JobStoreSupport.java:775)
at com.alibaba.arms.alert.scheduler.xxx.EnhanceJobStoreSupport.getNonManagedTXConnection (EnhanceJobStoreSupport.java:17)
at xxx.executeInNonManagedTXLock (JobStoreSupport.java:3777)
at xxx.retryExecuteInNonManagedTXLock (JobStoreSupport.java:3742)
at xxx.triggeredJobComplete (JobStoreSupport.java:3039)
at xxx.notifyJobStoreJobComplete (QuartzScheduler.java:1804)
at xxx.JobRunShell.java:269)
at xxx$WorkerThread.run (SimpleThreadPool.java:573)
【BLOCKED】2/87(次) - 占比2.30%
at xxx.checkinStatement (GooGooStatementCache.java:220)
at xxx.checkinStatement (NewPooledConnection.java:239)
at xxx.close (NewProxyPreparedStatement.java:1807)
at xxx.closeStatement (StdJDBCDelegate.java:3287)
at xxx.deleteFiredTrigger (StdJDBCDelegate.java:2916)
at xxx.triggeredJobComplete (JobStoreSupport.java:3116)
at xxx.executeVoid (JobStoreSupport.java:3043)
at xxx.$VoidTransactionCallback.execute (JobStoreSupport.java:3703)
at xxx.$VoidTransactionCallback.execute (JobStoreSupport.java:3701)
at xxx.executeInNonManagedTXLock (JobStoreSupport.java:3787)
at xxx.retryExecuteInNonManagedTXLock (JobStoreSupport.java:3742)
at xxx.triggeredJobComplete (JobStoreSupport.java:3039)
at xxx.notifyJobStoreJobComplete (QuartzScheduler.java:1804)
at xxx.JobRunShell.java:269)
at xxx.WorkerThread.run (SimpleThreadPool.java:573)
【BLOCKED】1/87(次) - 占比1.15%
Jika versi agen Anda 2.7.3.5 atau lebih baru, ARMS menggunakan continuous profiling untuk memberikan informasi stack metode yang lebih akurat mengenai penggunaan CPU thread. Gambar berikut menunjukkan contohnya. Untuk informasi selengkapnya, lihat continuous profiling.

Jika tidak ada data yang muncul setelah Anda mengklik Method Stack, ikuti langkah-langkah berikut untuk pemecahan masalah:
-
Jika versi agen Anda lebih lama dari 2.7.3.5, buka bagian Thread Settings pada tab dan periksa apakah sakelar Method stack for thread profiling diaktifkan. Jika sakelar ini dinonaktifkan, informasi stack metode tidak akan direkam. Jika diaktifkan, informasi stack metode dikumpulkan setiap 5 menit.
-
Jika versi agen Anda 2.7.3.5 atau lebih baru, buka bagian Continuous profiling pada tab dan pastikan sakelar main switch serta sakelar CPU hotspots diaktifkan. Kedua sakelar tersebut harus diaktifkan agar informasi stack metode dapat direkam.