Penjadwal tugas menjalankan tugas dua kali

10

Pembaruan: Ini sekarang telah terjadi dua hari berturut-turut.

Pembaruan: XML tugas dan gambar terjadwal sekarang termasuk.

Dua server yang berlokasi di London, keduanya Windows 2012, memiliki tugas yang dijadwalkan untuk dijalankan pada pukul 15:00 Senin hingga Jumat. Ini telah diatur selama 5 bulan terakhir tanpa masalah.

Namun, pada hari Senin tanggal 28 Agustus mereka berdua menjalankan tugas yang dijadwalkan pada jam 3 sore dan sekali lagi pada jam 4 sore. Ketika pertama kali dilaporkan, saya pikir itu terlalu kebetulan untuk menjadi hari setelah jam kembali satu jam. Namun, saya gagal menjelaskan mengapa itu terjadi dan jika itu terkait dengan perubahan jam sama sekali.

Log yang relevan dari satu server (log untuk yang lain juga mengikuti pola ini):

Acara 129 15:00:20 Tugas peluncuran tugas Penjadwal Penjadwal "\ 3pm", misalnya "C: \ Program Files (x86) \ PHP \ v5.4 \ php.exe" dengan ID proses 2388.

Acara 100 15:00:20 Penjadwal Tugas dimulai "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" instance dari tugas "\ 3pm" untuk pengguna "x \ y".

Acara 200 15:00:20 Penjadwal Tugas meluncurkan tindakan "C: \ Program Files (x86) \ PHP \ v5.4 \ php.exe" sebagai contoh "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" tugas "" 3 sore ".

Acara 201 15:00:23 Penjadwal Tugas berhasil menyelesaikan tugas "\ 3pm", misalnya "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}", action "C: \ Program Files (x86) \ PHP \ v5.4 \ php .exe "dengan kode pengembalian 0.

Acara 129 16:00:20 Tugas peluncuran tugas Penjadwal Penjadwal "\ 3pm", contoh "C: \ Program Files (x86) \ PHP \ v5.4 \ php.exe" dengan proses ID 1224.

Acara 100 16:00:20 Penjadwal Tugas dimulai "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" instance dari tugas "\ 3pm" untuk pengguna "x \ y".

Acara 200 16:00:20 Penjadwal Tugas meluncurkan tindakan "C: \ Program Files (x86) \ PHP \ v5.4 \ php.exe" sebagai contoh "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" tugas "\ 3 sore ".

Acara 201 16:00:23 Penjadwal Tugas berhasil menyelesaikan tugas "\ 3pm", instance "{3dd46ca9-c525-4796-86b5-5e513fd45f26}", action "C: \ Program Files (x86) \ PHP \ v5.4 \ php .exe "dengan kode pengembalian 0.

Saya telah melihat pertanyaan ini Tugas terjadwal berjalan dua kali dari waktu ke waktu yang mengarah ke bug di http://support.microsoft.com/kb/2461249 sebagai penyebabnya. Namun, ini tidak termasuk Server 2012 dalam daftar sistem operasinya yang bermasalah.

Saya berjuang untuk menjelaskan ini, bisakah orang lain?

Ekspor XML untuk tugas yang dijadwalkan adalah:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2013-04-16T14:04:17.4897806</Date>
    <Author>x\y</Author>
  </RegistrationInfo>
  <Triggers>
    <CalendarTrigger>
      <StartBoundary>2013-04-17T15:00:20</StartBoundary>
      <Enabled>true</Enabled>
      <ScheduleByWeek>
        <DaysOfWeek>
          <Monday />
          <Tuesday />
          <Wednesday />
          <Thursday />
          <Friday />
        </DaysOfWeek>
        <WeeksInterval>1</WeeksInterval>
      </ScheduleByWeek>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>x\y</UserId>
      <LogonType>Password</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>"C:\Program Files (x86)\PHP\v5.4\php.exe"</Command>
      <Arguments>-f "c:\a.php"</Arguments>
    </Exec>
  </Actions>
</Task>

Trigger Configuration untuk tugas yang dijadwalkan Sejarah untuk tugas yang dijadwalkan

29 Oktober 17:00 - Pembaruan - Kedua server kembali menjalankan tugas yang dijadwalkan pada pukul 15:00 dan 16:00. Saya sekarang telah memperbarui file php yang dijalankan oleh scheduler untuk tidak benar-benar melakukan apa-apa sementara saya sedang mencoba menyelesaikannya. Saya berencana memulai kembali satu server untuk melihat apakah ini akan mengubah sesuatu besok.

30 Oktober 08:25 - Pembaruan - Saat mengekspor tugas XML, saya ingat bahwa saya belum memasukkan fakta bahwa tugas terjadwal pada server kedua dibuat dengan mengimpor XML tugas yang dibuat pada yang pertama. Satu-satunya perbedaan antara dua tugas adalah jalur file php yang mereka jalankan dan akun pengguna yang mereka jalankan.

30 Oktober 16:30 - Pembaruan - Server yang telah dimulai ulang tidak menunjukkan perilaku ini lagi, tugas yang dijadwalkan berjalan sekali di atasnya. Saya akan menunggu beberapa hari sebelum memulai kembali server kedua jika ada yang punya ide untuk mendiagnosis mengapa / bagaimana hal itu terjadi

06 November 18:00 - Pembaruan - Kami menerapkan semua pembaruan ke server kedua dan memulai kembali. Kami berasumsi bahwa ini akan menyelesaikan masalah, namun jam 3 sore berlari dua kali lagi - sekali jam 3 sore dan lagi jam 4 sore. Saya melihat pekerjaan terjadwal lainnya dan mereka hanya berlari sekali.

Ross Buggins
sumber
Ini tidak mungkin karena perubahan waktu jika itu adalah hari setelahnya, dan waktu dalam log mencerminkan waktu yang akurat (artinya jika itu adalah masalah waktu Anda akan melihatnya berjalan dua kali tetapi keduanya pada pukul 3 sore bukan satu pada setiap waktu). Jujur saja, jika itu hanya terjadi sekali pada bulan Agustus saya akan cenderung mengatakan "bug / anomali / hantu" dan melanjutkan. Tapi mungkin orang lain bisa memberi Anda penjelasan di sini ...
TheCleaner
29 Oktober 17:00 - Pembaruan - Kedua server kembali menjalankan tugas yang dijadwalkan pada pukul 15:00 dan 16:00. Saya sekarang telah memperbarui file php yang dijalankan oleh scheduler untuk tidak benar-benar melakukan apa-apa sementara saya sedang mencoba menyelesaikannya. Saya berencana memulai kembali satu server untuk melihat apakah ini akan mengubah sesuatu besok.
Ross Buggins
1
Bisakah Anda membantu kami dan kirimkan ekspor XML tugas terjadwal agar kami dapat melihat apa sebenarnya parameternya?
Ryan Ries
hanya untuk menjadi shure: Anda memeriksa opsi-Pemicu "Sinkronisasi melintasi zona waktu"? Setelah itu Penjadwal Tugas menggunakan UTC.
Manfred Schmidt
Tidak, itu tidak dicentang. Namun, dengan itu saya tidak berpikir itu adalah perilaku yang saya butuhkan. Saya ingin tugas berjalan pada jam 3 sore waktu setempat, dengan itu saya yakin akan habis satu jam selama BST?
Ross Buggins

Jawaban:

4

Kami hanya melihat masalah yang sama pada server produksi kami (juga Windows Server 2012), yang terjadi minggu ini. Itu juga dimulai setelah jam kami kembali satu jam (yaitu 3 November 2013, di sini di Toronto).

Pembaruan pada 12 November 2013:

  • Mem-boot ulang tidak berfungsi (tugas terus berjalan dua kali)
  • Mengekspor dan mengimpor ulang tugas tidak berhasil (tugas terus berjalan dua kali)
  • Menciptakan kembali tugas secara manual di GUI akan memperbaiki masalah

Juga, setelah diskusi lebih lanjut dengan Microsoft (oleh sys admin kami), Microsoft mengatakan: "... masalah ini diidentifikasi pada Windows Server 2012 dan telah diperbaiki hanya pada rilis Windows berikutnya yaitu Windows 8.1 / Windows Server 2012 R2" .

Warren Stevens
sumber
Apakah ini diimpor oleh file XML juga? Lihat komentar saya untuk jawaban Stijn
Ross Buggins
Kami memiliki sekitar 10 tugas. Mereka yang diketik secara manual (saya yakin asal itu, karena saya baru saja membuat tugas) TIDAK memiliki masalah berjalan dua kali. Beberapa tugas lainnya diimpor dari XML dan memang ada masalah. Kami akan mencoba reboot besok, dan menindaklanjuti dengan Microsoft
Warren Stevens
Satu catatan lagi: Kami tidak memeriksa "Sinkronisasi lintas zona waktu" untuk semua tugas (dalam hal ini penting)
Warren Stevens
Dari admin sistem kami: "... Ada sesi dengan Microsoft, mereka telah melihat ini sebelumnya tetapi tidak dapat mengatakan apa yang menyebabkannya. Untuk saat ini mereka meminta kami mencoba me-reboot server dan juga mencoba membuat ulang tugas. Tidak ada perbaikan terbaru diinstal untuk menyelesaikan ini karena mereka mengatakan pelanggan lain yang terkena dampak dapat menyelesaikan dengan mem-boot ulang atau menciptakan kembali tugas-tugas ... "
Warren Stevens
1
Kami menjalankan Windows 2016 dan mengalami masalah yang sama (pekerjaan diimpor dari Windows 2012)
Greg
1

Saya mengalami masalah ini muncul minggu ini sejak pergantian DST. Saya tahu ini bukan jawaban yang bagus, tetapi menghapus dan menciptakan kembali pekerjaan tampaknya untuk menyelesaikan masalah. Saya menguji beberapa pekerjaan yang telah digandakan semalam dan pekerjaan yang diciptakan ulang tidak menduplikasi.

David Broaddus
sumber
0

Kami dapat mereproduksi kesalahan saat pekerjaan dijadwalkan ke UTC + 0 (server Windows 2012 R2).
Misalnya, kami memiliki pekerjaan yang berjalan pada tanggal yang salah yang dijadwalkan pukul 2 pagi.
Karena zona waktu kami adalah UTC + 2, pekerjaan berjalan pada UTC + 0.
Tampaknya Windows memiliki beberapa masalah pembulatan. Mungkin menggunakan UTC secara internal dan jika pekerjaan berjalan tepat pada UTC + 0, beberapa kesalahan pembulatan atau kondisi balapan menyebabkan pekerjaan berjalan pada tanggal yang salah.
Kami juga melihat pekerjaan, yang berjalan sesuai rencana tetapi setelah reboot, melaporkan:

Operator atau administrator telah menolak permintaan (0x800710E0)

Setelah mengubah waktu yang dijadwalkan menjadi 2:02 pagi, kesalahan hilang.

T_H
sumber