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 beberapa situasi, jumlah koneksi aktif yang siap dijalankan lebih tinggi dari jumlah vCPUs. Ketidakseimbangan ini mengakibatkan koneksi menunggu sumber daya CPU. Jika jumlah koneksi aktif tetap lebih tinggi secara konsisten daripada jumlah vCPUs, maka instans Anda mengalami pertengkaran 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.
Topik
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. Misalkan instans DB Anda memiliki 2 v CPUs dengan beban DB 3,1 sesi aktif rata-rata (AAS), semuanya dalam status CPU. Dalam hal ini, instans Anda terikat dengan CPU. Pertimbangkan strategi berikut:
-
Tingkatkan ke kelas instance yang lebih besar dengan lebih banyak vCPUs.
-
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
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 Optimizing Queries with 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 SHOW PROFILE Statement
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 ANALYZE TABLE Statement
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 connection storm
Jika metrik DBLoadCPU tidak terlalu tinggi, tetapi metrik CPUUtilization tinggi, penyebab pemanfaatan CPU yang tinggi berasal dari luar mesin basis data. Contoh klasik adalah connection storm.
Periksa apakah kondisi berikut benar:
-
Ada peningkatan dalam metrik Performance Insights dan
CPUUtilizationmetrik Amazon CloudWatchDatabaseConnections. -
Jumlah thread dalam CPU lebih besar dari jumlah vCPUs.
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