5 poin oleh GN⁺ 2025-10-29 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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.

Belum ada komentar.