Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Peristiwa cpu
tunggu terjadi ketika utas aktif CPU atau sedang menungguCPU.
Versi mesin yang didukung
Informasi peristiwa tunggu ini didukung untuk versi mesin berikut:
-
Aurora SQL Versi saya 2 dan 3
Konteks
Untuk setiap vCPU, koneksi dapat berjalan bekerja pada iniCPU. Dalam beberapa situasi, jumlah koneksi aktif yang siap dijalankan lebih tinggi dari jumlahvCPUs. Ketidakseimbangan ini mengakibatkan koneksi menunggu CPU sumber daya. Jika jumlah koneksi aktif tetap lebih tinggi secara konsisten daripada jumlahvCPUs, maka instans Anda mengalami CPU pertengkaran. Pertentangan tersebut menyebabkan peristiwa tunggu cpu
terjadi.
catatan
Metrik Performance Insights untuk CPU adalah. DBLoadCPU
Nilai untuk DBLoadCPU
dapat berbeda dari nilai untuk CloudWatch metrikCPUUtilization
. Metrik terakhir dikumpulkan dari HyperVisor untuk instance database.
Metrik Performance Insights OS 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
Performance Insights melaporkan CPU penggunaan oleh mesin database 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.
Bergantung pada penyebab peningkatan CPU pemanfaatan, pertimbangkan strategi berikut:
-
Tingkatkan CPU kapasitas tuan rumah. 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, lihat SQL tabel Teratas di Performance Insights untuk pernyataan SQL yang memiliki beban tertinggi. CPU Untuk informasi selengkapnya, lihat Menganalisis metrik dengan dasbor Wawasan Performa.
Biasanya, satu atau dua SQL pernyataan mengkonsumsi sebagian besar CPU siklus. Konsentrasikan upaya Anda pada pernyataan ini. Misalkan instans DB Anda memiliki 2 vCPUs dengan beban DB 3,1 sesi aktif rata-rata (AAS), semuanya dalam CPU keadaan. Dalam hal ini, instance Anda CPU terikat. Pertimbangkan strategi berikut:
-
Tingkatkan ke kelas instance yang lebih besar dengan lebih banyakvCPUs.
-
Setel kueri Anda untuk memiliki CPU beban yang lebih rendah.
Dalam contoh ini, SQL kueri teratas memiliki beban DB 1,5AAS, semuanya dalam CPU keadaan. SQLPernyataan lain memiliki beban 0,1 di CPU negara bagian. Dalam contoh ini, jika Anda menghentikan SQL pernyataan beban terendah, Anda tidak mengurangi beban database secara signifikan. Namun, jika Anda mengoptimalkan dua kueri beban tinggi menjadi dua kali lebih efisien, Anda menghilangkan kemacetanCPU. Jika Anda mengurangi CPU beban 1,5 hingga 50 AAS persen, AAS untuk setiap pernyataan berkurang menjadi 0,75. Total beban DB yang dihabiskan CPU sekarang 1,6AAS. Nilai ini berada di bawah CPU garis v maksimum 2.0.
Untuk ikhtisar berguna tentang pemecahan masalah menggunakan Performance Insights, lihat posting blog Menganalisis Beban Kerja SQL Saya Amazon Aurora
Menganalisis dan mengoptimalkan beban CPU kerja yang tinggi
Setelah Anda mengidentifikasi kueri atau kueri yang meningkatkan CPU penggunaan, 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
di dokumentasi SayaSQL. -
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 SHOWPROFILEPernyataan
dalam SQL dokumentasi Saya. -
Jalankan pernyataan
ANALYZE TABLE
.Gunakan pernyataan ini untuk menyegarkan statistik indeks untuk tabel yang diakses oleh kueri dengan CPU konsumsi tinggi. Dengan menganalisis pernyataan, Anda dapat membantu pengoptimal memilih rencana eksekusi yang sesuai. Untuk informasi selengkapnya, lihat ANALYZETABLEPernyataan
dalam SQL dokumentasi Saya.
Ikuti pedoman untuk meningkatkan CPU penggunaan
Untuk meningkatkan CPU penggunaan dalam instance database, ikuti panduan ini:
-
Pastikan semua kueri telah menggunakan indeks yang tepat.
-
Cari tahu apakah Anda dapat menggunakan kueri paralel Aurora. Anda dapat menggunakan teknik ini untuk mengurangi CPU penggunaan pada node kepala dengan menekan pemrosesan fungsi, pemfilteran baris, dan proyeksi kolom untuk klausa.
WHERE
-
Cari tahu apakah jumlah SQL eksekusi per detik memenuhi ambang batas yang diharapkan.
-
Cari tahu apakah pemeliharaan indeks atau pembuatan indeks baru membutuhkan CPU siklus yang dibutuhkan 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 posting blog Cara merencanakan dan mengoptimalkan Amazon Aurora dengan SQL kompatibilitas Saya untuk beban kerja terkonsolidasi
.
Memeriksa connection storm
Jika DBLoadCPU
metriknya tidak terlalu tinggi, tetapi CPUUtilization
metriknya tinggi, penyebab CPU pemanfaatan yang tinggi terletak di luar mesin database. Contoh klasik adalah connection storm.
Periksa apakah kondisi berikut benar:
-
Ada peningkatan dalam metrik Performance Insights dan
CPUUtilization
metrik Amazon CloudWatchDatabaseConnections
. -
Jumlah utas di CPU lebih besar dari jumlahvCPUs.
Jika kondisi di atas benar, coba kurangi jumlah koneksi basis data. Misalnya, Anda dapat menggunakan kumpulan koneksi seperti RDS Proxy. Untuk mempelajari praktik terbaik pengelolaan dan penskalaan koneksi yang efektif, lihat whitepaper Amazon Aurora My SQL DBA