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
danLWLock: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
dancheckpoint_timeout
berdasarkan waktu puncak beban kerja jika Anda melihatLWLock:BufferIO
bertepatan dengan penurunan metrikBufferCacheHitRatio
. 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.