LWLock:BufferIO (IPC:BufferIO) - Amazon Aurora

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

LWLock:BufferIO (IPC:BufferIO)

Peristiwa LWLock:BufferIO terjadi saat Aurora PostgreSQL atau RDS for PostgreSQL sedang menunggu proses lain untuk menyelesaikan operasi input/output (I/O) saat secara bersamaan mencoba mengakses halaman. Tujuannya adalah agar halaman yang sama dibaca ke dalam buffer bersama.

Versi mesin yang relevan

Informasi peristiwa tunggu ini relevan untuk semua versi Aurora PostgreSQL. Untuk Aurora PostgreSQL 12 dan versi sebelumnya, peristiwa tunggu ini disebut lwlock:buffer_io, sedangkan pada Aurora PostgreSQL versi 13 disebut lwlock:bufferio. Dari Aurora PostgreSQL versi 14, peristiwa tunggu BufferIO dipindahkan dari jenis peristiwa tunggu LWLock ke IPC (IPC:BufferIO).

Konteks

Setiap buffer bersama memiliki kunci I/O yang terkait dengan peristiwa tunggu LWLock:BufferIO, setiap kali suatu blok (atau halaman) harus diambil di luar pool buffer bersama.

Kunci ini digunakan untuk menangani beberapa sesi yang semuanya memerlukan akses ke blok yang sama. Blok ini harus dibaca dari luar pool buffer bersama, yang ditentukan oleh parameter shared_buffers.

Segera setelah halaman dibaca di dalam pool buffer bersama, kunci LWLock:BufferIO akan dilepaskan.

catatan

Peristiwa tunggu LWLock:BufferIO mendahului peristiwa tunggu IO: DataFileRead. Peristiwa tunggu IO:DataFileRead terjadi saat data sedang dibaca dari penyimpanan.

Untuk informasi selengkapnya tentang kunci ringan, lihat Ikhtisar Penguncian.

Penyebab

Penyebab umum peristiwa LWLock:BufferIO muncul dalam peristiwa tunggu teratas mencakup yang berikut:

  • Beberapa backend atau koneksi mencoba mengakses halaman yang sama yang juga menunggu operasi I/O

  • Rasio antara ukuran pool buffer bersama (ditentukan oleh parameter shared_buffers) dan jumlah buffer yang dibutuhkan oleh beban kerja saat ini

  • Ukuran pool buffer bersama tidak seimbang dengan jumlah halaman yang dikosongkan oleh operasi lain

  • Indeks besar atau bloat indeks yang memerlukan mesin untuk membaca lebih banyak halaman dari yang diperlukan ke dalam pool buffer bersama

  • Kurangnya indeks yang memaksa mesin DB untuk membaca lebih banyak halaman dari tabel daripada yang diperlukan

  • Lonjakan mendadak untuk koneksi basis data yang mencoba melakukan operasi pada halaman yang sama

Tindakan

Kami merekomendasikan berbagai tindakan, tergantung pada penyebab peristiwa tunggu Anda:

  • Amati metrik Amazon CloudWatch untuk korelasi antara penurunan tajam pada peristiwa tunggu BufferCacheHitRatio dan LWLock:BufferIO. Efek ini dapat berarti bahwa Anda memiliki pengaturan buffer bersama kecil. Anda mungkin perlu meningkatkan atau menaikkan skala kelas instans DB Anda. Anda dapat membagi beban kerja Anda menjadi lebih banyak simpul pembaca.

  • Sesuaikan max_wal_size dan checkpoint_timeout berdasarkan waktu puncak beban kerja jika Anda melihat LWLock:BufferIO bertepatan dengan penurunan metrik BufferCacheHitRatio. Lalu, identifikasi kueri yang mungkin menyebabkannya.

  • Verifikasi apakah Anda memiliki indeks yang tidak digunakan, lalu hapus.

  • Gunakan tabel yang dipartisi (yang juga memiliki indeks yang dipartisi). Dengan melakukan hal ini, Anda dapat menjaga penataan ulang indeks tetap rendah dan mengurangi dampaknya.

  • Hindari pengindeksan kolom yang tidak perlu.

  • Cegah lonjakan koneksi basis data mendadak dengan menggunakan pool koneksi.

  • Batasi jumlah maksimum koneksi ke basis data sebagai tindakan terbaik.