El programador de tareas ejecutó una tarea dos veces

10

Actualización: Esto ha sucedido ahora dos días seguidos.

Actualización: XML de tareas programadas e imágenes ahora incluidas.

Dos servidores ubicados en Londres, ambos Windows 2012, tienen una tarea programada para ejecutarse a las 3 p.m. Esto se ha configurado durante los últimos 5 meses sin ningún problema.

Sin embargo, el lunes 28 de agosto ambos ejecutaron la tarea programada a las 3 p.m. y luego nuevamente a las 4 p.m. Cuando se informó por primera vez, pensé que era una gran coincidencia el día después de que los relojes hubieran retrocedido una hora. Sin embargo, no puedo explicar por qué sucedió y si está relacionado con el cambio de reloj.

Los registros relevantes de un servidor (los registros para el otro también siguen este patrón):

Evento 129 15:00:20 Tarea de inicio del Programador de tareas "\ 3pm", instancia "C: \ Archivos de programa (x86) \ PHP \ v5.4 \ php.exe" con ID de proceso 2388.

Evento 100 15:00:20 El Programador de tareas inició "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" instancia de la tarea "\ 3pm" para el usuario "x \ y".

Evento 200 15:00:20 El Programador de tareas lanzó la acción "C: \ Archivos de programa (x86) \ PHP \ v5.4 \ php.exe" en la instancia "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" de la tarea "\ 3pm ".

Evento 201 15:00:23 El Programador de tareas completó con éxito la tarea "\ 3pm", instancia "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}", acción "C: \ Archivos de programa (x86) \ PHP \ v5.4 \ php .exe "con el código de retorno 0.

Evento 129 16:00:20 Tarea de inicio del Programador de tareas "\ 3pm", instancia "C: \ Archivos de programa (x86) \ PHP \ v5.4 \ php.exe" con ID de proceso 1224.

Evento 100 16:00:20 El Programador de tareas inició "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" instancia de la tarea "\ 3pm" para el usuario "x \ y".

Evento 200 16:00:20 El Programador de tareas lanzó la acción "C: \ Archivos de programa (x86) \ PHP \ v5.4 \ php.exe" en la instancia "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" de la tarea "\ 3pm ".

Evento 201 16:00:23 El Programador de tareas completó con éxito la tarea "\ 3pm", instancia "{3dd46ca9-c525-4796-86b5-5e513fd45f26}", acción "C: \ Archivos de programa (x86) \ PHP \ v5.4 \ php .exe "con el código de retorno 0.

He visto esta pregunta Tarea programada ejecutándose dos veces de vez en cuando que apunta a un error en http://support.microsoft.com/kb/2461249 como la causa. Sin embargo, esto no incluye Server 2012 en su lista de sistemas operativos problemáticos.

Estoy luchando por explicar esto, ¿alguien más?

La exportación XML para la tarea programada es:

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

Configuración de disparo para la tarea programada Historial de la tarea programada

29 de octubre 17:00 - Actualización - Ambos servidores han vuelto a ejecutar la tarea programada a las 15:00 y 16:00. Ahora actualicé el archivo php que ejecuta el planificador para no hacer nada mientras intento resolver esto. Estoy planeando reiniciar un servidor para ver si esto cambia algo mañana.

30 de octubre, 08:25 - Actualización: al exportar la tarea XML, recordé que no había incluido el hecho de que la tarea programada en el segundo servidor se creó importando el XML de la tarea creada en el primero. La única diferencia entre las dos tareas es la ruta del archivo php que están ejecutando y la cuenta de usuario con la que se están ejecutando.

30 de octubre, 16:30 - Actualización: el servidor que se ha reiniciado ya no muestra este comportamiento, la tarea programada se ejecutó una vez en él. Esperaré unos días antes de reiniciar el segundo servidor en caso de que alguien tenga alguna idea sobre el diagnóstico de por qué / cómo sucedió

06 de noviembre 18:00 - Actualización - Aplicamos todas las actualizaciones al segundo servidor y reiniciamos. Asumimos que esto resolvería el problema, sin embargo, las 3pm corrieron dos veces otra vez, una a las 3pm y otra vez a las 4pm. Miré otros trabajos programados y solo se ejecutaron una vez.

Ross Buggins
fuente
Es poco probable debido al cambio de hora si es el día siguiente, y las horas en los registros reflejan la hora exacta (es decir, si fuera un problema de tiempo, vería que se ejecuta dos veces, pero ambas a las 3 p.m., no una a la vez). Honestamente, si solo sucedió una vez en agosto, me inclinaría a decir "error / anomalía / fantasmas" y seguir adelante. Pero tal vez alguien más pueda arrojar algo de luz aquí ...
TheCleaner
29 de octubre 17:00 - Actualización - Ambos servidores han vuelto a ejecutar la tarea programada a las 15:00 y 16:00. Ahora actualicé el archivo php que ejecuta el programador para que no haga nada mientras intento resolver esto. Estoy planeando reiniciar un servidor para ver si esto cambia algo mañana.
Ross Buggins
1
¿Podría hacernos un favor por favor y publicar la exportación XML de la tarea programada para que podamos ver cuáles son realmente sus parámetros?
Ryan Ries
para estar seguro: ¿marcó la opción de activación "Sincronizar entre zonas horarias"? Después de eso, el Programador de tareas está utilizando UTC.
Manfred Schmidt
No, eso no está marcado. Sin embargo, con eso marcado no creo que sea el comportamiento que requiero. Quiero que la tarea se ejecute a las 3 p.m., hora local, con eso marcado, creo que se ejecutará una hora durante BST.
Ross Buggins

Respuestas:

4

Acabamos de notar el mismo problema en nuestros servidores de producción (también Windows Server 2012), que ocurrió esta semana. También comenzó después de que nuestros relojes retrocedieron una hora (que fue el 3 de noviembre de 2013, aquí en Toronto).

Actualización al 12 de noviembre de 2013:

  • El reinicio no funcionó (las tareas continuaron ejecutándose dos veces)
  • Exportar y volver a importar las tareas no funcionó (las tareas continuaron ejecutándose dos veces)
  • Volver a crear manualmente la tarea en la GUI soluciona el problema

Además, después de más discusiones con Microsoft (por nuestro administrador del sistema), Microsoft dijo: "... el problema se identificó en Windows Server 2012 y se solucionó solo en la próxima versión de Windows, que es Windows 8.1 / Windows Server 2012 R2". .

Warren Stevens
fuente
¿También fueron importados por archivos XML? Ver mi comentario a la respuesta de Stijn
Ross Buggins
Tenemos alrededor de 10 tareas. Los que se escribieron manualmente (estoy seguro de ese origen, porque recientemente creé las tareas) NO tienen el problema de ejecutar dos veces. Algunas de las otras tareas se importaron de XML y tienen el problema. Vamos a intentar reiniciar mañana, y seguiremos con Microsoft
Warren Stevens
Una nota más: no tenemos "Sincronizar entre zonas horarias" para ninguna de las tareas (en caso de que sea importante)
Warren Stevens
Desde nuestro administrador del sistema: "... Tuvieron una sesión con Microsoft, ya lo han visto antes, pero no pueden decir exactamente qué lo causa. Por ahora nos preguntan si intentamos reiniciar el servidor y también intentamos recrear las tareas. No hay revisión instalable para resolver esto, ya que han dicho que otros clientes afectados pudieron resolver reiniciando o recreando las tareas ... "
Warren Stevens
1
Estamos ejecutando Windows 2016 y estamos teniendo el mismo problema (trabajo importado de Windows 2012)
Greg
1

He tenido este problema esta semana desde el cambio de horario de verano. Sé que esta no es una gran respuesta, pero eliminar y recrear el trabajo parece resolver el problema. Probé en un par de trabajos que se han estado duplicando durante la noche y los trabajos recreados no se duplicaron.

David Broaddus
fuente
0

Podríamos reproducir el error cuando el trabajo se programó para UTC + 0 (servidor Windows 2012 R2).
Por ejemplo, teníamos un trabajo en fechas equivocadas que estaba programado para las 2 de la mañana.
Como nuestra zona horaria es UTC + 2, el trabajo se ejecutó en UTC + 0.
Parece que Windows tiene algunos problemas de redondeo. Quizás utiliza UTC internamente y si el trabajo se ejecuta exactamente en UTC + 0, algunos errores de redondeo o condiciones de carrera hacen que el trabajo se ejecute en las fechas incorrectas.
También vimos trabajos, que se ejecutan según lo planeado pero después del reinicio, informaron:

El operador o administrador ha rechazado la solicitud (0x800710E0)

Después de cambiar la hora programada a, por ejemplo, 2:02 am, los errores desaparecieron.

T_H
fuente