Fitur diagnostik CPU dari Application Real-Time Monitoring Service (ARMS) menggunakan teknologi profiling berkelanjutan untuk secara berkala mengumpulkan snapshot tumpukan metode thread CPU yang sedang dieksekusi guna menemukan penyebab utama pemanfaatan CPU tinggi. Saat pemanfaatan CPU sistem Anda tinggi, fitur ini dengan cepat mengidentifikasi metode logika bisnis yang menyebabkan konsumsi CPU tinggi.
Jika Anda mengaktifkan fitur diagnostik CPU, overhead CPU meningkat sekitar 5%. Pastikan untuk memesan sejumlah sumber daya yang tersedia terlebih dahulu.
Aktifkan fitur diagnostik CPU
Di panel navigasi sebelah kiri, klik Application Settings. Pada halaman yang muncul, klik tab Custom Configuration.
Di bagian Continuous profiling, aktifkan Main switch dan CPU hotspot, lalu konfigurasikan alamat IP instance aplikasi atau blok CIDR dari beberapa instance.
Di bagian bawah tab, klik Save.
Modifikasi berlaku tanpa perlu me-restart aplikasi.
Gunakan teknologi profiling berkelanjutan untuk melihat data CPU hotspot
Contoh berikut menunjukkan metode yang mengonsumsi sumber daya CPU dan dijalankan selama 500 milidetik.
public class CPUPressure {
// Metode permintaan.
public void runBusiness() {
long start = System.currentTimeMillis(), period = 0;
while (period <= 500L) {
period = System.currentTimeMillis() - start;
}
}
}Di panel navigasi sebelah kiri, klik Continuous profiling. Di halaman Continuous profiling, pilih instance yang ingin Anda lihat dan periode waktu untuk kueri.
Di tab Single View, Anda dapat menanyakan data dan melihat hasil analisis agregasi.
CatatanJenis analisis performa berikut tersedia:
CPU Time: jumlah core CPU yang diminta.
Allocated Memory: ukuran memori yang diminta.
Allocations: jumlah permintaan memori. Berdasarkan jumlah permintaan memori, Anda dapat melihat metode-metode yang sering meminta memori.

Klik Aggregation & Analysis. Di halaman yang muncul, atur parameter Profiling Type ke CPU Time.

Sisi kiri gambar adalah daftar pemanfaatan CPU dari semua metode yang terlibat dalam pemanggilan, dan sisi kanan adalah grafik api dari semua informasi metode.
Kolom Self menampilkan waktu atau sumber daya yang dikonsumsi oleh setiap metode dalam stack, tidak termasuk waktu atau sumber daya yang dikonsumsi oleh metode anaknya. Data tersebut dapat digunakan untuk mengidentifikasi metode yang menghabiskan waktu atau sumber daya berlebih untuk dirinya sendiri.
Kolom Total menampilkan waktu atau sumber daya yang dikonsumsi untuk setiap metode itu sendiri, termasuk waktu atau sumber daya yang dikonsumsi untuk semua metode anaknya. Data tersebut dapat digunakan untuk mengidentifikasi metode yang memberikan kontribusi waktu atau sumber daya paling banyak.
Berdasarkan gambar di atas, lakukan analisis berikut.
Urutkan nilai di kolom Self secara menaik. Temukan dan klik metode java.lang.System.currentTimeMillis() dengan nilai terbesar. Metode terkait ditampilkan di grafik api.

Anda dapat menemukan bahwa metode java.lang.System.currentTimeMillis() memiliki kotak terlebar di bagian atas stack grafik api.
Karena metode java.lang.System.currentTimeMillis() adalah fungsi pustaka Java Development Kit (JDK), Anda perlu mencari lebih jauh ke atas, dan Anda dapat menemukan metode java.lang.System.currentTimeMillis() dan metode induknya com.alibaba.cloud.pressure.memory.CPUPressure.runBusiness(). Sebagai metode layanan pertama yang didefinisikan oleh aplikasi, metode com.alibaba.cloud.pressure.memory.CPUPressure.runBusiness() mengonsumsi 28,63 detik, atau 91,44% dari stack. Oleh karena itu, kesimpulan dapat diambil bahwa metode com.alibaba.cloud.pressure.memory.CPUPressure.runBusiness() mengonsumsi sejumlah besar sumber daya dalam periode waktu tertentu. Anda dapat menggunakan metode ini untuk menganalisis logika metode terkait dan memeriksa apakah mereka dapat dioptimalkan.
Analisis di atas menunjukkan bahwa metode com.alibaba.cloud.pressure.memory.CPUPressure.runBusiness() membutuhkan waktu 28,63 detik dalam 1 menit, yang secara logis sesuai dengan skenario sampel.
Referensi
Ketika Anda menggunakan fitur profiling berkelanjutan:
Troubleshoot panggilan lambat dan masalah pemanfaatan CPU tinggi dengan merujuk pada yang berikut ini:
Troubleshoot masalah umum.