Le planificateur de tâches a exécuté une tâche deux fois

10

Mise à jour: cela s'est produit deux jours de suite.

Mise à jour: XML des tâches planifiées et des images désormais incluses.

Deux serveurs situés à Londres, les deux Windows 2012, ont une tâche planifiée pour s'exécuter à 15 heures du lundi au vendredi. Cela a été mis en place sans problème depuis 5 mois.

Cependant, le lundi 28 août, ils ont tous deux exécuté la tâche prévue à 15 heures, puis à 16 heures. Quand il a été signalé pour la première fois, je pensais que c'était trop une coïncidence pour être le lendemain du retour d'une heure. Cependant, je n'arrive pas à expliquer pourquoi cela s'est produit et si cela est lié au changement d'horloge.

Les journaux pertinents d'un serveur (les journaux de l'autre suivent également ce modèle):

Événement 129 15:00:20 Tâche de lancement du planificateur de tâches "\ 3pm", instance "C: \ Program Files (x86) \ PHP \ v5.4 \ php.exe" avec l'ID de processus 2388.

Événement 100 15:00:20 Le Planificateur de tâches a démarré l'instance "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" "de la tâche" \ 15h "pour l'utilisateur" x \ y ".

Event 200 15:00:20 Le Planificateur de tâches a lancé l'action "C: \ Program Files (x86) \ PHP \ v5.4 \ php.exe" dans l'instance "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" de la tâche "\ 15h ".

Événement 201 15:00:23 Le Planificateur de tâches a terminé avec succès la tâche "\ 3pm", instance "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}", action "C: \ Program Files (x86) \ PHP \ v5.4 \ php .exe "avec le code retour 0.

Événement 129 16:00:20 Tâche de lancement du planificateur de tâches "\ 3pm", instance "C: \ Program Files (x86) \ PHP \ v5.4 \ php.exe" avec l'ID de processus 1224.

Événement 100 16:00:20 Le Planificateur de tâches a démarré l'instance "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" "de la tâche" \ 15h "pour l'utilisateur" x \ y ".

Événement 200 16:00:20 Le Planificateur de tâches a lancé l'action "C: \ Program Files (x86) \ PHP \ v5.4 \ php.exe" dans l'instance "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" de la tâche "\ 15h ".

Événement 201 16:00:23 Le Planificateur de tâches a terminé avec succès la tâche "\ 15h", instance "{3dd46ca9-c525-4796-86b5-5e513fd45f26}", action "C: \ Program Files (x86) \ PHP \ v5.4 \ php .exe "avec le code retour 0.

J'ai vu cette tâche planifiée s'exécuter deux fois de temps en temps, ce qui indique qu'un bogue à http://support.microsoft.com/kb/2461249 en est la cause. Cependant, cela n'inclut pas Server 2012 dans sa liste de systèmes d'exploitation problématiques.

J'ai du mal à expliquer cela, quelqu'un d'autre peut-il?

L'exportation XML pour la tâche planifiée est:

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

Configuration du déclencheur pour la tâche planifiée Historique de la tâche planifiée

29 octobre 17h00 - Mise à jour - Les deux serveurs ont à nouveau exécuté la tâche planifiée à 15h00 et 16h00. J'ai maintenant mis à jour le fichier php qui est exécuté par le planificateur pour ne rien faire pendant que j'essaie de résoudre ce problème. Je prévois de redémarrer un serveur pour voir si cela change quelque chose demain.

30 octobre 08:25 - Mise à jour - Lors de l'exportation du XML de la tâche, je me suis souvenu que je n'avais pas inclus le fait que la tâche planifiée sur le deuxième serveur avait été créée en important le XML de la tâche créée sur le premier. La seule différence entre les deux tâches est le chemin du fichier php qu'elles exécutent et le compte utilisateur sous lequel elles s'exécutent.

30 octobre 16:30 - Mise à jour - Le serveur qui a été redémarré ne montre plus ce comportement, la tâche planifiée s'est exécutée une fois dessus. J'attendrai quelques jours avant de redémarrer le deuxième serveur au cas où quelqu'un aurait des idées pour diagnostiquer pourquoi / comment cela s'est produit

06 novembre 18:00 - Mise à jour - Nous avons appliqué toutes les mises à jour au deuxième serveur et redémarré. Nous avons supposé que cela résoudrait le problème, mais le 15h a de nouveau fonctionné deux fois - une fois à 15h et à 16h. J'ai regardé d'autres travaux prévus et ils n'ont couru qu'une seule fois.

Ross Buggins
la source
Il est peu probable en raison du changement d'heure si c'est le lendemain, et les heures dans les journaux reflètent l'heure exacte (ce qui signifie que si c'était un problème d'heure, vous le verriez s'exécuter deux fois, mais les deux à 15 heures, pas une à chaque fois). Honnêtement cependant, si cela ne s'est produit qu'une seule fois en août, je serais enclin à dire "bug / anomalie / fantômes" et à continuer. Mais peut-être que quelqu'un d'autre peut vous éclairer ici ...
TheCleaner
29 octobre 17h00 - Mise à jour - Les deux serveurs ont à nouveau exécuté la tâche planifiée à 15h00 et 16h00. J'ai maintenant mis à jour le fichier php qui est exécuté par le planificateur pour ne rien faire pendant que j'essaie de résoudre ce problème. Je prévois de redémarrer un serveur pour voir si cela change quelque chose demain.
Ross Buggins
1
Pourriez-vous nous rendre service et publier l'exportation XML de la tâche planifiée afin que nous puissions voir quels sont réellement ses paramètres?
Ryan Ries
juste pour être sûr: vous avez coché l'option Trigger "Synchroniser entre les fuseaux horaires"? Après cela, le Planificateur de tâches utilise UTC.
Manfred Schmidt
Non, ce n'est pas coché. Cependant, avec cette case cochée, je ne pense pas que ce soit le comportement dont j'ai besoin. Je veux que la tâche s'exécute à 15 heures, heure locale, avec cette case cochée, je crois que cela durerait une heure pendant BST?
Ross Buggins

Réponses:

4

Nous venons de remarquer le même problème sur nos serveurs de production (également Windows Server 2012), qui s'est produit cette semaine. Cela a également commencé après le retour d'une heure de nos horloges (c'était le 3 novembre 2013, ici à Toronto).

Mise à jour au 12 novembre 2013:

  • Le redémarrage n'a pas fonctionné (les tâches ont continué de s'exécuter deux fois)
  • L'exportation et la réimportation des tâches n'ont pas fonctionné (les tâches ont continué à s'exécuter deux fois)
  • La recréation manuelle de la tâche dans l'interface graphique résout le problème

En outre, après de nouvelles discussions avec Microsoft (par notre administrateur système), Microsoft a déclaré: "... le problème a été identifié dans Windows Server 2012 et n'a été résolu que dans la prochaine version de Windows qui est Windows 8.1 / Windows Server 2012 R2" .

Warren Stevens
la source
Ces fichiers ont-ils également été importés par des fichiers XML? Voir mon commentaire à la réponse de Stijn
Ross Buggins
Nous avons environ 10 tâches. Ceux qui ont été saisis manuellement (je suis certain de cette origine, car j'ai récemment créé les tâches) n'ont PAS le problème de l'exécution deux fois. Certaines des autres tâches ont été importées de XML et ont le problème. Nous allons essayer un redémarrage demain et nous poursuivrons avec Microsoft
Warren Stevens
Une autre remarque: nous n'avons pas "Synchroniser entre les fuseaux horaires" vérifié pour aucune des tâches (au cas où cela compte)
Warren Stevens
De notre administrateur système: "... J'ai eu une session avec Microsoft, ils l'ont déjà vu mais ne peuvent pas dire exactement ce qui en est la cause. Pour l'instant, ils nous demandent d'essayer de redémarrer le serveur et de recréer les tâches. Il n'y a pas de correctif installable pour résoudre ce problème, car ils ont déclaré que d'autres clients concernés pouvaient résoudre le problème en redémarrant ou en recréant les tâches ... "
Warren Stevens
1
Nous exécutons Windows 2016 et rencontrons le même problème (tâche importée de Windows 2012)
Greg
1

J'ai eu ce problème cette semaine depuis le passage à l'heure d'été. Je sais que ce n'est pas une bonne réponse, mais la suppression et la recréation du travail semblent résoudre le problème. J'ai testé quelques travaux qui ont été dupliqués pendant la nuit et les travaux recréés n'ont pas été dupliqués.

David Broaddus
la source
0

Nous pourrions reproduire l'erreur lorsque le travail a été planifié sur UTC + 0 (serveur Windows 2012 R2).
Par exemple, nous avions un travail exécuté à de mauvaises dates qui était prévu à 2 heures du matin.
Comme notre fuseau horaire est UTC + 2, le travail s'est exécuté à UTC + 0.
Il semble que Windows ait des problèmes d'arrondi. Il utilise peut-être UTC en interne et si le travail s'exécute exactement à UTC + 0, certaines erreurs d'arrondi ou conditions de concurrence provoquent l'exécution du travail aux mauvaises dates.
Nous avons également vu des travaux, qui se déroulent comme prévu mais après le redémarrage, ont rapporté:

L'opérateur ou l'administrateur a refusé la demande (0x800710E0)

Après avoir modifié l'heure programmée à par exemple 02h02, les erreurs ont disparu.

T_H
la source