Der Taskplaner hat eine Aufgabe zweimal ausgeführt

9

Update: Dies ist nun zwei Tage hintereinander geschehen.

Update: XML der geplanten Aufgaben und Bilder jetzt enthalten.

Zwei Server in London, beide Windows 2012, haben eine geplante Aufgabe, die montags bis freitags um 15 Uhr ausgeführt werden soll. Dies wurde in den letzten 5 Monaten problemlos eingerichtet.

Am Montag, den 28. August, führten beide die geplante Aufgabe um 15 Uhr und dann wieder um 16 Uhr aus. Als es zum ersten Mal gemeldet wurde, dachte ich, es sei ein zu großer Zufall, um der Tag zu sein, an dem die Uhren eine Stunde zurückgegangen waren. Ich kann jedoch nicht erklären, warum es passiert ist und ob es überhaupt mit dem Uhrwechsel zusammenhängt.

Die relevanten Protokolle von einem Server (die Protokolle für den anderen folgen ebenfalls diesem Muster):

Ereignis 129 15:00:20 Taskplaner startet Task "\ 3pm", Instanz "C: \ Programme (x86) \ PHP \ v5.4 \ php.exe" mit der Prozess-ID 2388.

Ereignis 100 15:00:20 Taskplaner gestartet "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" Instanz der Task "\ 3pm" für Benutzer "x \ y".

Ereignis 200 15:00:20 Der Taskplaner hat die Aktion "C: \ Programme (x86) \ PHP \ v5.4 \ php.exe" in der Instanz "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" der Aufgabe "\ gestartet 3 Uhr nachmittags".

Ereignis 201 15:00:23 Taskplaner hat Aufgabe "\ 3pm", Instanz "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}", Aktion "C: \ Programme (x86) \ PHP \ v5.4 \ php" erfolgreich abgeschlossen .exe "mit Rückkehrcode 0.

Ereignis 129 16:00:20 Taskplaner startet Task "\ 3pm", Instanz "C: \ Programme (x86) \ PHP \ v5.4 \ php.exe" mit der Prozess-ID 1224.

Ereignis 100 16:00:20 Taskplaner gestartet "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" Instanz der Task "\ 3pm" für Benutzer "x \ y".

Ereignis 200 16:00:20 Der Taskplaner hat die Aktion "C: \ Programme (x86) \ PHP \ v5.4 \ php.exe" in der Instanz "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" der Aufgabe "\ gestartet 3 Uhr nachmittags".

Ereignis 201 16:00:23 Taskplaner hat Aufgabe "\ 3pm", Instanz "{3dd46ca9-c525-4796-86b5-5e513fd45f26}", Aktion "C: \ Programme (x86) \ PHP \ v5.4 \ php" erfolgreich abgeschlossen .exe "mit Rückkehrcode 0.

Ich habe diese Frage gesehen. Geplante Aufgabe wird von Zeit zu Zeit zweimal ausgeführt, was auf einen Fehler unter http://support.microsoft.com/kb/2461249 hinweist . Dies schließt Server 2012 jedoch nicht in die Liste der problematischen Betriebssysteme ein.

Ich kämpfe darum, das zu erklären, kann jemand anderes?

Der XML-Export für die geplante Aufgabe lautet:

<?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>

Konfiguration für die geplante Aufgabe auslösen Verlauf für die geplante Aufgabe

29. Oktober 17:00 - Update - Beide Server haben die geplante Aufgabe erneut um 15:00 und 16:00 Uhr ausgeführt. Ich habe jetzt die PHP-Datei aktualisiert, die vom Scheduler ausgeführt wird, um nichts zu tun, während ich versuche, dies zu lösen. Ich plane, einen Server neu zu starten, um zu sehen, ob sich dadurch morgen etwas ändert.

30. Oktober 08:25 - Update - Beim Exportieren der Aufgaben-XML fiel mir ein, dass ich nicht berücksichtigt hatte, dass die geplante Aufgabe auf dem zweiten Server durch Importieren der XML-Datei der auf der ersten erstellten Aufgabe erstellt wurde. Der einzige Unterschied zwischen den beiden Aufgaben ist der Pfad der PHP-Datei, die sie ausführen, und das Benutzerkonto, unter dem sie ausgeführt werden.

30. Oktober 16:30 - Update - Der neu gestartete Server zeigt dieses Verhalten nicht mehr an. Die geplante Aufgabe wurde einmal darauf ausgeführt. Ich werde ein paar Tage warten, bevor ich den zweiten Server neu starte, falls jemand Ideen zur Diagnose hat, warum / wie es passiert ist

06. November 18:00 - Update - Wir haben alle Updates auf den zweiten Server angewendet und neu gestartet. Wir gingen davon aus, dass dies das Problem lösen würde, aber die 15 Uhr lief noch zweimal - einmal um 15 Uhr und noch einmal um 16 Uhr. Ich habe mir andere geplante Jobs angesehen und sie liefen nur einmal.

Ross Buggins
quelle
Aufgrund der Zeitänderung ist es unwahrscheinlich, dass es sich um einen Tag danach handelt, und die Zeiten in den Protokollen geben die genaue Zeit wieder (dh wenn es sich um ein Zeitproblem handelt, wird es zweimal ausgeführt, aber beide um 15 Uhr, nicht jeweils eine). Ehrlich gesagt, wenn es nur einmal im August passiert ist, würde ich gerne "Bug / Anomalie / Geister" sagen und weitermachen. Aber vielleicht kann jemand anderes hier etwas Licht für Sie bringen ...
TheCleaner
29. Oktober 17:00 - Update - Beide Server haben die geplante Aufgabe erneut um 15:00 und 16:00 Uhr ausgeführt. Ich habe jetzt die PHP-Datei aktualisiert, die vom Scheduler ausgeführt wird, um nichts zu tun, während ich versuche, dies zu lösen. Ich plane, einen Server neu zu starten, um zu sehen, ob sich dadurch morgen etwas ändert.
Ross Buggins
1
Könnten Sie uns bitte einen Gefallen tun und den XML-Export der geplanten Aufgabe veröffentlichen, damit wir sehen können, welche Parameter tatsächlich vorliegen?
Ryan Ries
Nur um sicher zu gehen: Sie haben die Trigger-Option "Über Zeitzonen synchronisieren" aktiviert? Danach verwendet der Taskplaner UTC.
Manfred Schmidt
Nein, das ist nicht angekreuzt. Mit diesem Häkchen denke ich jedoch nicht, dass es das Verhalten ist, das ich benötige. Ich möchte, dass die Aufgabe um 15 Uhr Ortszeit ausgeführt wird. Wenn dies angekreuzt ist, glaube ich, dass sie während der BST eine Stunde auslaufen würde.
Ross Buggins

Antworten:

4

Wir haben gerade das gleiche Problem auf unseren Produktionsservern (auch Windows Server 2012) festgestellt, das diese Woche aufgetreten ist. Es begann auch, nachdem unsere Uhren eine Stunde zurückgingen (das war der 3. November 2013, hier in Toronto).

Update per 12. November 2013:

  • Der Neustart funktionierte nicht (die Aufgaben wurden zweimal fortgesetzt)
  • Das Exportieren und erneute Importieren der Aufgaben funktionierte nicht (Aufgaben wurden weiterhin zweimal ausgeführt).
  • Das manuelle Neuerstellen der Aufgabe in der GUI behebt das Problem

Nach weiteren Gesprächen mit Microsoft (von unserem Systemadministrator) sagte Microsoft außerdem: "... das Problem wurde in Windows Server 2012 festgestellt und wurde erst in der nächsten Windows-Version Windows 8.1 / Windows Server 2012 R2 behoben." .

Warren Stevens
quelle
Wurden diese auch von XML-Dateien importiert? Siehe meinen Kommentar zu Stijn Antwort
Ross Buggins
Wir haben ungefähr 10 Aufgaben. Diejenigen, die manuell eingegeben wurden (ich bin mir dieses Ursprungs sicher, da ich kürzlich die Aufgaben erstellt habe), haben NICHT das Problem, dass sie zweimal ausgeführt werden. Einige der anderen Aufgaben wurden aus XML importiert und haben das Problem. Wir werden morgen einen Neustart versuchen und mit Microsoft
Warren Stevens
Noch ein Hinweis: Wir haben nicht "Über Zeitzonen synchronisieren" für eine der Aufgaben überprüft (falls dies wichtig ist)
Warren Stevens
Von unserem Systemadministrator: "... hatten eine Sitzung mit Microsoft, sie haben dies schon einmal gesehen, können aber nicht genau sagen, was es verursacht. Im Moment fragen sie uns, ob wir versuchen, den Server neu zu starten und die Aufgaben neu zu erstellen. Es gibt keinen Hotfix installierbar, um dieses Problem zu beheben, da andere betroffene Kunden das Problem entweder durch Neustart oder Neuerstellung der Aufgaben beheben konnten ... "
Warren Stevens
1
Wir führen Windows 2016 aus und haben das gleiche Problem (Job aus Windows 2012 importiert)
Greg
1

Dieses Problem ist diese Woche seit der Sommerzeitumstellung aufgetreten. Ich weiß, dass dies keine gute Antwort ist, aber das Löschen und Neuerstellen des Jobs scheint das Problem zu lösen. Ich habe einige Jobs getestet, die über Nacht dupliziert wurden, und die neu erstellten Jobs wurden nicht dupliziert.

David Broaddus
quelle
0

Wir konnten den Fehler reproduzieren, wenn der Job auf UTC + 0 (Windows 2012 R2-Server) geplant war.
ZB Wir hatten einen Job, der zu falschen Terminen lief und um 2 Uhr morgens geplant war.
Da unsere Zeitzone UTC + 2 ist, wurde der Job um UTC + 0 ausgeführt.
Es scheint, dass Windows einige Rundungsprobleme hat. Möglicherweise wird UTC intern verwendet. Wenn der Job genau um UTC + 0 ausgeführt wird, führen einige Rundungsfehler oder Rennbedingungen dazu, dass der Job an den falschen Daten ausgeführt wird.
Wir haben auch Jobs gesehen, die wie geplant ausgeführt wurden, aber nach dem Neustart gemeldet wurden:

Der Betreiber oder Administrator hat die Anfrage abgelehnt (0x800710E0)

Nach dem Ändern der geplanten Zeit auf z. B. 2:02 Uhr verschwanden die Fehler.

T_H
quelle