cpu - Amazon Aurora

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

cpu

Peristiwa tunggu cpu terjadi saat thread aktif di CPU atau sedang menunggu CPU.

Versi mesin yang didukung

Informasi peristiwa tunggu ini didukung untuk versi mesin berikut:

  • Aurora MySQL versi 2 dan 3

Konteks

Untuk setiap vCPU, koneksi dapat berjalan bekerja pada CPU ini. Dalam situasi tertentu, jumlah koneksi aktif yang siap dijalankan lebih tinggi daripada jumlah vCPU. Ketidakseimbangan ini mengakibatkan koneksi menunggu sumber daya CPU. Jika jumlah koneksi aktif secara konsisten tetap lebih tinggi daripada jumlah vCPU, maka instans akan mengalami pertentangan CPU. Pertentangan tersebut menyebabkan peristiwa tunggu cpu terjadi.

catatan

Metrik Wawasan Performa untuk CPU adalah DBLoadCPU. Nilai untuk DBLoadCPU dapat berbeda dari nilai untuk CloudWatch metrikCPUUtilization. Metrik terakhir dikumpulkan dari HyperVisor untuk instance database.

Metrik OS Wawasan Performa memberikan informasi terperinci tentang pemanfaatan CPU. Misalnya, Anda dapat menampilkan metrik berikut:

  • os.cpuUtilization.nice.avg

  • os.cpuUtilization.total.avg

  • os.cpuUtilization.wait.avg

  • os.cpuUtilization.idle.avg

Wawasan Performa melaporkan penggunaan CPU oleh mesin basis data sebagai os.cpuUtilization.nice.avg.

Kemungkinan penyebab peningkatan peristiwa tunggu

Saat peristiwa ini terjadi lebih dari biasanya, yang mungkin menunjukkan adanya masalah performa, berikut adalah penyebab umumnya:

  • Kueri analitik

  • Transaksi bersamaan yang tinggi

  • Transaksi yang berjalan lama

  • Peningkatan mendadak dalam jumlah koneksi, yang dikenal sebagai login storm

  • Peningkatan peralihan konteks

Tindakan

Jika peristiwa tunggu cpu mendominasi aktivitas basis data, hal tersebut tidak selalu menunjukkan adanya masalah performa. Tanggapi peristiwa ini hanya saat performa menurun.

Tergantung pada penyebab peningkatan pemanfaatan CPU, pertimbangkan strategi berikut:

  • Tingkatkan kapasitas CPU host. Pendekatan ini biasanya hanya memberikan bantuan sementara.

  • Identifikasi kueri teratas untuk pengoptimalan potensial.

  • Arahkan ulang sebagian beban kerja hanya-baca ke simpul pembaca jika berlaku.

Mengidentifikasi sesi atau kueri yang menyebabkan masalah

Untuk menemukan sesi dan kueri tersebut, lihat tabel SQL Teratas dalam Wawasan Performa untuk pernyataan SQL yang memiliki beban CPU tertinggi. Untuk informasi selengkapnya, lihat Menganalisis metrik dengan dasbor Wawasan Performa.

Biasanya, satu atau dua pernyataan SQL mengonsumsi sebagian besar siklus CPU. Konsentrasikan upaya Anda pada pernyataan ini. Misalnya, instans DB Anda memiliki 2 vCPU dengan beban DB 3,1 sesi aktif rata-rata (AAS), yang semuanya dalam status CPU. Dalam hal ini, instans Anda terikat dengan CPU. Pertimbangkan strategi berikut:

  • Lakukan peningkatan ke kelas instans yang lebih besar dengan lebih banyak vCPU.

  • Sesuaikan kueri Anda untuk memiliki beban CPU yang lebih rendah.

Dalam contoh ini, kueri SQL teratas memiliki beban DB 1,5 AAS, yang semuanya dalam status CPU. Pernyataan SQL lain memiliki beban 0,1 dalam status CPU. Dalam contoh ini, jika menghentikan pernyataan SQL dengan beban terendah, Anda tidak akan mengurangi beban basis data secara signifikan. Namun, jika mengoptimalkan dua kueri beban tinggi menjadi dua kali lebih efisien, Anda menghilangkan kemacetan CPU. Jika Anda mengurangi beban CPU 1,5 AAS sebesar 50%, AAS untuk setiap pernyataan akan berkurang menjadi 0,75. Total beban DB yang dihabiskan untuk CPU sekarang adalah 1,6 AAS. Nilai ini berada di bawah baris vCPU maksimum 2.0.

Untuk ikhtisar pemecahan masalah yang berguna menggunakan Wawasan Performa, lihat postingan blog Menganalisis Beban Kerja Amazon Aurora MySQL dengan Wawasan Performa. Lihat juga artikel Dukungan AWS, Bagaimana cara memecahkan masalah dan mengatasi pemanfaatan CPU yang tinggi pada instans Amazon RDS for MySQL saya?.

Menganalisis dan mengoptimalkan beban kerja CPU yang tinggi

Setelah mengidentifikasi kueri atau sejumlah kueri yang meningkatkan penggunaan CPU, Anda dapat mengoptimalkannya atau mengakhiri koneksi. Contoh berikut menunjukkan cara mengakhiri koneksi.

CALL mysql.rds_kill(processID);

Untuk informasi selengkapnya, lihat mysql.rds_kill.

Jika Anda mengakhiri sesi, tindakan tersebut dapat memicu rollback yang panjang.

Mengikuti panduan untuk mengoptimalkan kueri

Untuk mengoptimalkan kueri, pertimbangkan panduan berikut:

  • Jalankan pernyataan EXPLAIN.

    Perintah ini menunjukkan setiap langkah yang terlibat dalam menjalankan kueri. Untuk informasi selengkapnya, lihat Mengoptimalkan Kueri dengan EXPLAIN dalam dokumentasi MySQL.

  • Jalankan pernyataan SHOW PROFILE.

    Gunakan pernyataan ini untuk meninjau detail profil yang dapat menunjukkan penggunaan sumber daya untuk pernyataan yang dijalankan selama sesi saat ini. Untuk informasi selengkapnya, lihat Pernyataan SHOW PROFILE dalam dokumentasi MySQL.

  • Jalankan pernyataan ANALYZE TABLE.

    Gunakan pernyataan ini untuk menyegarkan statistik indeks untuk tabel yang diakses oleh kueri dengan konsumsi CPU tinggi. Dengan menganalisis pernyataan, Anda dapat membantu pengoptimal memilih rencana eksekusi yang sesuai. Untuk informasi selengkapnya, lihat Pernyataan ANALYZE TABLE dalam dokumentasi MySQL.

Mengikuti panduan untuk meningkatkan penggunaan CPU

Untuk meningkatkan penggunaan CPU dalam instans basis data, ikuti panduan berikut:

  • Pastikan semua kueri telah menggunakan indeks yang tepat.

  • Cari tahu apakah Anda dapat menggunakan kueri paralel Aurora. Anda dapat menggunakan teknik ini untuk mengurangi penggunaan CPU pada simpul kepala dengan menekan pemrosesan fungsi, pemfilteran baris, dan proyeksi kolom untuk klausa WHERE.

  • Cari tahu apakah jumlah eksekusi SQL per detik memenuhi ambang batas yang diharapkan.

  • Cari tahu apakah pemeliharaan indeks atau pembuatan indeks baru membutuhkan siklus CPU yang diperlukan oleh beban kerja produksi Anda. Jadwalkan aktivitas pemeliharaan di luar waktu aktivitas puncak.

  • Cari tahu apakah Anda dapat menggunakan partisi untuk membantu mengurangi set data kueri. Untuk informasi selengkapnya, lihat postingan blog Cara merencanakan dan mengoptimalkan Amazon Aurora dengan kompatibilitas MySQL untuk beban kerja terkonsolidasi.

Memeriksa storm koneksi

Jika metrik DBLoadCPU tidak terlalu tinggi, tetapi metrik CPUUtilization tinggi, penyebab pemanfaatan CPU yang tinggi berasal dari luar mesin basis data. Contoh klasik adalah storm koneksi.

Periksa apakah kondisi berikut benar:

  • Ada peningkatan dalam metrik Performance Insights dan CPUUtilization metrik Amazon CloudWatchDatabaseConnections.

  • Jumlah thread dalam CPU lebih besar dari jumlah vCPU.

Jika kondisi di atas benar, coba kurangi jumlah koneksi basis data. Misalnya, Anda dapat menggunakan kumpulan koneksi, seperti Proksi RDS. Untuk mempelajari praktik terbaik penskalaan dan manajemen koneksi yang efektif, lihat laporan resmi Buku Panduan DBA Amazon Aurora MySQL untuk Manajemen Koneksi.