- Tulisan yang memperingatkan tentang kesalahan pekerjaan cron yang terjadi saat transisi daylight saving time (DST) di server Linux
- Dua kali setiap tahun, saat zona waktu berubah pada Minggu dini hari pukul 2 atau 3, muncul masalah pekerjaan cron dijalankan ganda atau terlewat
- Sebagai contoh nyata, di lingkungan vixie-cron, pekerjaan antara pukul 3:00~3:01 dijalankan berulang 60 kali dengan interval 1 detik, menyebabkan kekacauan email
- Sebagai solusi, disarankan mengatur zona waktu ke UTC atau menghindari pekerjaan pada jam tersebut, serta mengembangkan scheduler open source yang lebih baik
- Contoh ini mengingatkan operator server dan engineer DevOps akan pentingnya mengelola risiko transisi zona waktu
Benturan antara daylight saving time dan pekerjaan cron
- Jika pekerjaan cron dijadwalkan pada Minggu dini hari pukul 2 atau 3, waktunya akan bertabrakan dengan momen transisi daylight saving time (DST) dan dapat menimbulkan kesalahan eksekusi yang tidak terduga
- Saat DST dimulai, jam maju satu jam, dan saat berakhir, jam mundur satu jam, sehingga terjadi duplikasi atau hilangnya waktu tertentu
- Akibatnya, pekerjaan pada rentang waktu tertentu bisa dijalankan dua kali atau bahkan tidak dijalankan sama sekali
- Terutama pekerjaan yang berjalan setiap Minggu dini hari akan terdampak oleh momen transisi DST yang terjadi 2 kali setahun
- Biasanya berjalan normal, tetapi pada hari transisi DST bisa terjadi eksekusi berulang yang tidak normal
Kasus nyata: masalah eksekusi berulang pada vixie-cron
- Di lingkungan Linux dengan vixie-cron, pernah dilaporkan kasus saat DST dimulai di mana pekerjaan antara pukul 3:00~3:01 dijalankan sekitar 60 kali dengan interval 1 detik
- Setiap pekerjaan saling bertabrakan dan menimbulkan kekacauan seperti banjir notifikasi email
- Untungnya, pekerjaan tersebut tidak bersifat kritis sehingga tidak menimbulkan kerusakan sistem
- Masalah ini berasal dari struktur penjadwalan berbasis waktu cron yang sederhana
- Cron tidak memahami perubahan zona waktu atau transisi DST, dan hanya menjalankan tugas sesuai waktu yang ditentukan
Solusi dan alternatif yang mungkin
- Cara paling sederhana adalah tidak menjadwalkan pekerjaan pada Minggu dini hari pukul 2 dan 3
- Dengan menghindari rentang waktu itu, masalah eksekusi ganda akibat transisi DST dapat dihindari sepenuhnya
- Mengatur zona waktu server ke UTC juga merupakan alternatif yang efektif
- UTC tidak menerapkan daylight saving time, sehingga tidak ada perubahan waktu
- Sebagai solusi yang lebih mendasar, diajukan usulan untuk mengembangkan scheduler pekerjaan yang lebih cerdas
- Dibutuhkan alat alternatif open source yang memiliki fitur seperti pencegahan eksekusi ganda, pembatasan waktu eksekusi, dan kesadaran terhadap zona waktu
Usulan jangka panjang: menghapus daylight saving time
- Penulis mengajukan penghapusan DST di tingkat pemerintah sebagai solusi yang paling diinginkan
- Perubahan waktu dua kali setahun menciptakan kompleksitas yang tidak perlu bagi operasi sistem maupun kehidupan manusia
- Namun selama DST masih dipertahankan, administrator sistem dan engineer DevOps harus mengambil langkah pencegahan
- Khususnya perlu berhati-hati dalam mengelola pekerjaan yang bergantung pada waktu seperti batch otomatis, backup, dan rotasi log
Kesimpulan: prinsip penjadwalan cron yang aman
- Hindari pekerjaan pada rentang pukul 2:00~3:00 saat transisi DST
- Jika memungkinkan, gunakan operasi server berbasis UTC untuk menghilangkan masalah zona waktu
- Sadarilah keterbatasan cron dan pertimbangkan penggunaan alat penjadwalan yang lebih tangguh
- Dalam lingkungan DevOps, pengelolaan zona waktu dan jaminan keandalan otomatisasi adalah tugas yang penting
Belum ada komentar.