Timeout:VacuumDelay - Layanan Basis Data Relasional Amazon

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

Timeout:VacuumDelay

Peristiwa Timeout:VacuumDelay menunjukkan bahwa batas biaya untuk I/O vakum telah terlampaui dan bahwa proses vakum telah dibuat tidur. Operasi vakum berhenti selama durasi yang ditentukan dalam parameter penundaan biaya masing-masing lalu melanjutkan pekerjaannya. Untuk perintah vakum manual, penundaan ditentukan dalam parameter vacuum_cost_delay. Untuk daemon autovacuum, penundaan ditentukan dalam autovacuum_vacuum_cost_delay parameter.

Versi mesin yang didukung

Informasi peristiwa tunggu ini didukung untuk semua versi RDS for PostgreSQL.

Konteks

PostgreSQL memiliki daemon autovacuum dan perintah vakum manual. Proses autovacuum “aktif” secara default untuk instans DB RDS for PostgreSQL. Perintah vakum manual digunakan sesuai kebutuhan, misalnya, untuk melakukan purging tabel tuple mati atau menghasilkan statistik baru.

Saat pemvakuman sedang berlangsung, PostgreSQL menggunakan penghitung internal untuk melacak perkiraan biaya seiring sistem melakukan berbagai operasi I/O. Ketika penghitung mencapai nilai yang ditentukan oleh parameter batas biaya, proses yang melakukan operasi akan tidur selama durasi singkat yang ditentukan dalam parameter penundaan biaya. Kemudian, proses ini akan mengatur ulang penghitung dan melanjutkan operasi.

Proses vakum memiliki parameter yang dapat digunakan untuk mengatur konsumsi sumber daya. Autovacuum dan perintah vakum manual memiliki parameter sendiri untuk menetapkan nilai batas biaya. Keduanya juga memiliki parameter sendiri untuk menentukan penundaan biaya, yaitu jumlah waktu untuk membuat proses vakum menjadi tidur ketika batasnya tercapai. Dengan cara ini, parameter penundaan biaya berfungsi sebagai mekanisme throttling untuk konsumsi sumber daya. Dalam daftar berikut, Anda dapat menemukan deskripsi parameter ini.

Parameter yang mempengaruhi throttling daemon autovacuum
  • autovacuum_vacuum_cost_limit – Menentukan nilai batas biaya yang akan digunakan dalam operasi vakum otomatis. Jika pengaturan untuk parameter ini ditingkatkan, proses vakum dapat menggunakan lebih banyak sumber daya dan peristiwa tunggu Timeout:VacuumDelay akan berkurang.

  • autovacuum_vacuum_cost_delay – Menentukan nilai penundaan biaya yang akan digunakan dalam operasi vakum otomatis. Nilai default adalah 2 milidetik. Mengatur parameter penundaan ke 0 akan menonaktifkan mekanisme throttling dan dengan demikian, peristiwa tunggu Timeout:VacuumDelay tidak akan muncul.

Untuk informasi selengkapnya, lihat Automatic Vacuuming dalam dokumentasi PostgreSQL.

Parameter yang memengaruhi throttling proses vakum manual
  • vacuum_cost_limit – Ambang batas yang membuat proses pemvakuman menjadi tidur. Secara default, batasnya adalah 200. Angka ini merepresentasikan perkiraan biaya terakumulasi untuk I/O tambahan yang dibutuhkan oleh berbagai sumber daya. Meningkatkan nilai ini akan mengurangi jumlah peristiwa tunggu Timeout:VacuumDelay.

  • vacuum_cost_delay – Jumlah waktu proses vakum tidur ketika batas biaya vakum telah tercapai. Pengaturan default adalah 0, yang berarti fitur ini tidak aktif. Anda dapat mengaturnya ke nilai bilangan bulat untuk menentukan jumlah milidetik untuk mengaktifkan fitur ini, tetapi kami sarankan Anda membiarkannya di pengaturan default.

Untuk informasi selengkapnya tentang parameter vacuum_cost_delay, lihat Resource Consumption dalam dokumentasi PostgreSQL.

Untuk mempelajari selengkapnya tentang cara mengonfigurasi dan menggunakan autovacuum dengan RDS for PostgreSQL, lihat Bekerja dengan fitur autovacuum PostgreSQL di Amazon RDS for PostgreSQL.

Kemungkinan penyebab peningkatan peristiwa tunggu

Timeout:VacuumDelay dipengaruhi oleh keseimbangan antara pengaturan parameter batas biaya (vacuum_cost_limit, autovacuum_vacuum_cost_limit) dan parameter penundaan biaya (vacuum_cost_delay, autovacuum_vacuum_cost_delay) yang mengontrol durasi tidur vakum. Meningkatkan nilai parameter batas biaya akan memungkinkan lebih banyak sumber daya digunakan oleh vakum sebelum dibuat tidur. Tindakan ini akan menghasilkan lebih sedikit peristiwa tunggu Timeout:VacuumDelay. Meningkatkan salah satu parameter penundaan akan menyebabkan peristiwa tunggu Timeout:VacuumDelay terjadi lebih sering dan berlangsung lebih lama.

Pengaturan parameter autovacuum_max_workers juga dapat meningkatkan jumlah Timeout:VacuumDelay. Setiap proses pekerja autovacuum tambahan berkontribusi pada mekanisme penghitung internal, dan dengan demikian batasnya dapat tercapai lebih cepat daripada dengan proses pekerja autovacuum tunggal. Karena batas biaya tercapai lebih cepat, penundaan biaya diberlakukan lebih sering, sehingga menghasilkan lebih banyak peristiwa tunggu Timeout:VacuumDelay. Untuk informasi selengkapnya, lihat autovacuum_max_workers dalam dokumentasi PostgreSQL.

Objek besar, seperti 500 GB atau lebih, juga meningkatkan peristiwa tunggu ini karena vakum dapat menghabiskan waktu lama untuk menyelesaikan pemrosesan objek besar.

Tindakan

Jika operasi vakum selesai seperti yang diharapkan, tidak diperlukan remediasi. Dengan kata lain, peristiwa tunggu ini belum tentu menunjukkan masalah. Ini menunjukkan bahwa vakum sedang dibuat tidur selama periode waktu yang ditentukan dalam parameter penundaan sehingga sumber daya dapat diterapkan pada proses lain yang perlu diselesaikan.

Jika Anda ingin operasi vakum selesai lebih cepat, Anda dapat menurunkan parameter penundaan. Tindakan ini akan mempersingkat waktu tidur vakum.