Pemanfaatan CPU tinggi atau lonjakan dapat memengaruhi kinerja query dan memperlambat respons. Topik ini menjelaskan cara melihat pemanfaatan CPU serta memecahkan masalah terkait pemanfaatan CPU tinggi pada instans ApsaraDB RDS untuk SQL Server.
Lihat Pemanfaatan CPU
Anda dapat melihat pemanfaatan CPU instans RDS Anda di Konsol ApsaraDB RDS.
Keluarga instans bersama mendukung penggunaan kembali sumber daya CPU. Saat memilih keluarga instans bersama, kinerja instans RDS mungkin terbatas karena penggunaan kembali sumber daya CPU meskipun pemanfaatan CPU tidak tinggi. Jika memerlukan kinerja stabil dan tinggi, disarankan memilih keluarga instans khusus.
Jika instans RDS menggunakan tipe instans dengan lebih sedikit sumber daya tetapi mengalami konkurensi tinggi, sumber daya CPU dapat habis. Untuk kinerja stabil dan tinggi, disarankan meningkatkan tipe instans.
Metode 1: Lihat pemanfaatan CPU di halaman Monitoring and Alerts
Buka halaman Monitoring and Alerts dari instans RDS Anda. Di tab Standard Monitoring, lihat pemanfaatan CPU instans RDS Anda.

Metode 2: Lihat pemanfaatan CPU di halaman Autonomy Services
Instans RDS Anda tidak menjalankan SQL Server 2008 R2 dengan cloud disks.
Instans RDS Anda berada di salah satu wilayah berikut: Cina (Hangzhou), Cina (Shanghai), Cina (Qingdao), Cina (Beijing), Cina (Zhangjiakou), Cina (Hohhot), Cina (Ulanqab), Cina (Shenzhen), Cina (Heyuan), Cina (Guangzhou), Cina (Chengdu), Cina (Hong Kong), Singapura, dan UEA (Dubai).
Di panel navigasi kiri halaman detail instans, pilih Autonomy ServicesPerformance Optimization. Di tab Performance Insight pada halaman yang muncul, lihat pemanfaatan CPU instans RDS Anda.

Analisis Metrik CPU
Penyebab
Dalam kebanyakan kasus, peningkatan mendadak dalam pemanfaatan CPU disebabkan oleh masalah berikut:
Jumlah permintaan query tiba-tiba meningkat. Contohnya, beban kerja tiba-tiba meningkat atau terjadi cache penetration di lapisan caching data.
Overhead CPU untuk permintaan query tiba-tiba meningkat. Contohnya, permintaan query baru diproses menggunakan metode yang tidak efisien atau rencana eksekusi beberapa pernyataan query berubah.
Frekuensi penyusunan rencana eksekusi untuk pernyataan query secara signifikan meningkat. Contohnya, jika sejumlah besar data perlu di-cache, jumlah rencana eksekusi yang di-cache dan rasio hit cache menurun secara signifikan. Dalam hal ini, rencana eksekusi yang ada tidak dapat digunakan kembali, sehingga sistem sering menyusun rencana eksekusi untuk pernyataan SQL, meningkatkan overhead CPU keseluruhan instans RDS Anda.
Masalah parameter sniffing terjadi karena rencana eksekusi yang di-cache untuk sebagian besar beban kerja tidak optimal.
Analisis Masalah
Di panel navigasi kiri halaman detail instans, pilih Autonomy ServicesPerformance Optimization. Di tab Performance Insight pada halaman yang muncul, lihat metrik berikut untuk mengidentifikasi penyebab peningkatan pemanfaatan CPU instans RDS Anda.
Hingga delapan jenis metrik dapat ditampilkan di tab. Jika tidak dapat menemukan metrik tertentu di tab, klik Custom metric di sudut kanan atas tab Performance Insight. Di kotak dialog yang muncul, pilih metrik yang ingin ditampilkan di tab.
Metrik | Analisis | |
QPS | Jika nilai metrik QPS meningkat pada tingkat yang sama dengan pemanfaatan CPU, peningkatan pemanfaatan CPU disebabkan oleh peningkatan jumlah permintaan query. Ini menunjukkan bahwa peningkatan pemanfaatan CPU tidak terletak pada instans RDS Anda. Anda harus menganalisis aplikasi Anda untuk memecahkan masalah peningkatan pemanfaatan CPU. |
|
Page_Lookups/sec | Metrik Page_Lookups/sec menunjukkan jumlah halaman yang dibaca secara logis per detik untuk memproses permintaan query. Dalam kebanyakan kasus, nilai metrik Page_Lookups/sec meningkat karena sistem menggunakan metode yang tidak efisien untuk mengeksekusi pernyataan query. Jika nilai metrik ini tinggi, overhead CPU untuk permintaan query juga tinggi. Jika nilai metrik Page_Lookups/sec meningkat pada tingkat yang sama dengan pemanfaatan CPU tetapi nilai metrik QPS tetap relatif stabil, overhead CPU untuk pernyataan query meningkat. Dalam hal ini, Anda harus mengidentifikasi jenis pernyataan query yang menyebabkan peningkatan pemanfaatan CPU. Kemudian, Anda dapat mengoptimalkan jenis pernyataan query ini untuk mengurangi pemanfaatan CPU. |
|
Sqlcompliations | Metrik Sqlcompliations menunjukkan jumlah operasi kompilasi per detik untuk permintaan query. Jika nilai metrik Sqlcompliations meningkat pada tingkat yang sama dengan pemanfaatan CPU tetapi nilai metrik QPS tetap relatif stabil, peningkatan pemanfaatan CPU mungkin disebabkan oleh overhead CPU yang diperlukan untuk menyusun rencana eksekusi untuk permintaan query. Anda dapat memeriksa lebih lanjut metrik Cache_Object_Counts dan Cache_Pages yang terkait dengan jumlah rencana eksekusi yang di-cache. Jika nilai metrik ini secara signifikan menurun, peningkatan pemanfaatan CPU mungkin disebabkan oleh tekanan yang sangat tinggi pada cache. Dalam kasus ini, solusi yang efektif adalah meningkatkan kapasitas memori instans RDS Anda dengan mengubah spesifikasi instans. Untuk informasi lebih lanjut, lihat Ubah spesifikasi instans dan Tipe instans untuk instans utama ApsaraDB RDS untuk SQL Server. |
|
Contoh
Gambar berikut menunjukkan contoh kasus.

Statistik pemanfaatan CPU menunjukkan bahwa peningkatan pemanfaatan CPU terjadi dari 09:10 hingga 09:20 dan dari 09:30 hingga 09:40. Namun, nilai metrik QPS tidak meningkat selama periode waktu ini. Nilai metrik QPS meningkat setelah 09:40. Oleh karena itu, peningkatan pemanfaatan CPU tidak disebabkan oleh peningkatan jumlah permintaan query.
Nilai metrik Sqlcompliations tidak meningkat selama periode waktu ini, dan nilai absolut metrik ini rendah. Oleh karena itu, peningkatan pemanfaatan CPU tidak disebabkan oleh overhead CPU yang diperlukan untuk menyusun rencana eksekusi untuk pernyataan query.
Nilai metrik Page_Lookups/sec meningkat pada tingkat yang sama dengan pemanfaatan CPU selama periode waktu ini. Oleh karena itu, peningkatan pemanfaatan CPU mungkin disebabkan oleh overhead CPU yang tinggi yang diperlukan untuk memproses beberapa permintaan query selama periode waktu ini.
Anda harus mengidentifikasi pernyataan query yang memerlukan overhead CPU tinggi selama periode waktu ini. Jika nilai metrik Page_Lookups/sec meningkat, pemanfaatan CPU juga meningkat. Beberapa pernyataan query mungkin memerlukan overhead CPU tinggi untuk eksekusi tetapi overhead CPU sedang untuk operasi baca logis. Oleh karena itu, Anda harus menganalisis pernyataan query yang dieksekusi selama periode ini untuk memecahkan masalah peningkatan pemanfaatan CPU.
Analisis sesi aktif
Penyebab
Penyebab paling umum dari peningkatan mendadak dalam pemanfaatan CPU adalah ketidakefisienan metode yang digunakan untuk mengeksekusi pernyataan query. Anda dapat menggunakan metrik Average Active Sessions (AAS) dari Performance Insight untuk mengidentifikasi dan menganalisis pernyataan query yang dieksekusi menggunakan metode yang tidak efisien.
Analisis Masalah
Sistem memeriksa sesi aktif setiap 10 detik dan mencatat pernyataan SQL, nilai hash query, rencana eksekusi, dan acara tunggu dari permintaan query aktif. Dalam kebanyakan kasus, ketika pernyataan query yang memerlukan overhead CPU tinggi sedang berjalan, nilai di kolom Wait Category dari pernyataan query pada tab Waits adalah CPU.
Kolom SQL Hash pada tab SQL menampilkan nilai hash yang dihasilkan setelah pernyataan SQL distrukturkan berdasarkan parameter. Nilai hash digunakan untuk menandai dan mengumpulkan pernyataan SQL yang menggunakan struktur yang sama. Dengan cara ini, sistem dapat mengklasifikasikan dan mengumpulkan pernyataan SQL berdasarkan struktur pernyataan SQL. Anda dapat menanyakan statistik terbaru pernyataan SQL dari sys.dm_exec_query_stats tampilan sistem berdasarkan value in the query_hash column dari pernyataan SQL.
Identifikasi
Klik hyperlink di kolom SQL Hash pada tab SQL untuk melihat statistik AAS pernyataan SQL.
Klik Analyze di kolom Execution Plan pada tab SQL untuk melihat rencana eksekusi pernyataan SQL. Anda juga dapat melihat saran optimasi yang dihasilkan oleh layanan otonomi.
Saran optimasi sebelumnya cocok untuk pernyataan SQL dengan struktur sederhana. Jika pernyataan SQL pada instans RDS Anda memiliki struktur kompleks, kami sarankan Anda menganalisis dan menguji rencana eksekusi pernyataan SQL ini berdasarkan saran optimasi sebelumnya. Untuk informasi lebih lanjut tentang metrik AAS, lihat Gunakan fitur wawasan kinerja.
Analisis pernyataan SQL top N
Penyebab
Anda dapat menggunakan metrik ASS dari layanan otonomi untuk mengidentifikasi pernyataan SQL yang menyebabkan peningkatan pemanfaatan CPU selama periode waktu tertentu. Namun, informasi seperti frekuensi eksekusi, overhead CPU rata-rata, dan overhead CPU keseluruhan dari berbagai pernyataan SQL, tidak disediakan. Jika ingin mengoptimalkan pemanfaatan CPU keseluruhan instans RDS Anda, kami sarankan Anda memperoleh detail tentang pernyataan SQL yang mengonsumsi sumber daya CPU paling banyak.
Analisis Masalah
SQL Server dapat secara otomatis mengumpulkan informasi tentang objek seperti pernyataan SQL dan prosedur tersimpan. SQL Server juga menyediakan tampilan sistem, seperti sys.dm_exec_query_stats dan sys.dm_exec_procedure_stats untuk Anda melihat informasi tentang objek tersebut. Kemudian, Anda dapat mengidentifikasi pernyataan SQL yang mengonsumsi sumber daya paling banyak. Sumber daya dapat berupa berbagai jenis.
Laporan TOP SQL dan TOP Objects dari layanan otonomi dan laporan query top N di SQL Server Management Studio (SSMS) juga didasarkan pada tampilan sistem. Laporan ini lebih mudah digunakan tetapi kurang fleksibel daripada tampilan sistem.

Optimalkan pengaturan parameter
Tingkat maksimum paralelisme (MAXDOP) digunakan untuk membatasi jumlah maksimum thread yang dapat digunakan secara bersamaan oleh satu permintaan query. Pada dasarnya, beberapa prosesor bekerja sama untuk mempercepat query kompleks. Untuk query intensif CPU, tingkat paralelisme (DOP) yang tinggi dapat mempersingkat periode eksekusi, tetapi mengonsumsi lebih banyak sumber daya penjadwalan sistem dan dapat menyebabkan konten. Saat mengonfigurasi parameter, pertimbangkan waktu respons query dan throughput keseluruhan. Kami sarankan Anda mengonfigurasi parameter berdasarkan deskripsi berikut:
Skenario konkurensi tinggi
Skenario termasuk sistem pemrosesan transaksi online (OLTP). Saat sistem perlu memproses sejumlah besar permintaan konkuren dan waktu eksekusi sebagian besar query kurang dari 5 detik, kami sarankan menggunakan pengaturan
MAXDOP≤4. Jika operasi indeks frekuensi tinggi atau pemindaian tabel partisi ada, gunakan pengaturanMAXDOP=1untuk mencegah overhead rencana eksekusi paralel.Skenario konkurensi rendah
Skenario termasuk sistem pemrosesan analitik online (OLAP) dan sistem pelaporan. Anda dapat meningkatkan DOP untuk satu query kompleks, seperti agregasi data besar dan star joins. Kami sarankan meningkatkan DOP ke nilai yang dihitung menggunakan rumus berikut:
MAXDOP=min[(Jumlah inti CPU logis/Jumlah query konkuren),8]. Nilai maksimum parameter tidak boleh lebih besar dari 75% dari jumlah inti CPU logis. Sebagai contoh, Anda dapat mengatur parameter ke nilai lebih besar dari atau sama dengan 48 untuk sistem yang memiliki 64 inti CPU.
Nilai default parameter MAXDOP adalah 2 untuk mengurangi risiko konkurensi dan konten sumber daya. Anda dapat mengeksekusi pernyataan EXECUTE sp_rds_configure 'max degree of parallelism', <value> untuk memodifikasi parameter secara dinamis. Setelah parameter dimodifikasi, Anda harus memantau metrik CXPACKET yang menentukan tipe tunggu CXPACKET dan metrik Scheduler Busy% yang menentukan persentase waktu yang digunakan oleh penjadwal SQL Server untuk memproses tugas. Kami sarankan Anda juga memodifikasi threshold biaya untuk paralelisme yang nilainya default adalah 5.
Referensi
Apa yang harus saya lakukan jika pemanfaatan CPU pada instans ApsaraDB RDS untuk SQL Server tinggi?


