Atualização: isso já aconteceu dois dias seguidos.
Atualização: XML de tarefas agendadas e imagens agora incluídas.
Dois servidores localizados em Londres, ambos com Windows 2012, têm uma tarefa agendada definida para ser executada às 15h de segunda a sexta-feira. Isso foi configurado nos últimos 5 meses sem nenhum problema.
No entanto, na segunda-feira 28 de agosto, ambos executaram a tarefa agendada às 15h e depois novamente às 16h. Quando foi relatado pela primeira vez, achei que era coincidência demais o dia seguinte ao relógio voltar uma hora. No entanto, não estou conseguindo explicar por que isso aconteceu e se está relacionado à mudança do relógio.
Os logs relevantes de um servidor (os logs para o outro seguem também esse padrão):
Evento 129 15:00:20 Tarefa de lançamento do Agendador de Tarefas "\ 15:00", instância "C: \ Arquivos de Programas (x86) \ PHP \ v5.4 \ php.exe" com o ID do processo 2388.
Evento 100 15:00:20 O Agendador de Tarefas foi iniciado "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" instância da tarefa "\ 15:00" para o usuário "x \ y".
Evento 200 15:00:20 O Agendador de tarefas iniciou a ação "C: \ Arquivos de Programas (x86) \ PHP \ v5.4 \ php.exe" na instância "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" da tarefa "\ 15:00".
Evento 201 15:00:23 O Agendador de tarefas concluiu com êxito a tarefa "\ 15:00", instância "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}", ação "C: \ Arquivos de Programas (x86) \ PHP \ v5.4 \ php .exe "com código de retorno 0.
Evento 129 16:00:20 Tarefa de lançamento do Agendador de Tarefas "\ 15:00", instância "C: \ Arquivos de Programas (x86) \ PHP \ v5.4 \ php.exe" com o ID do processo 1224.
Evento 100 16:00:20 O Agendador de Tarefas foi iniciado "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" instância da tarefa "\ 15:00" para o usuário "x \ y".
Evento 200 16:00:20 O Agendador de Tarefas iniciou a ação "C: \ Arquivos de Programas (x86) \ PHP \ v5.4 \ php.exe" na instância "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" da tarefa "\ 15:00".
Evento 201 16:00:23 O Agendador de tarefas concluiu com êxito a tarefa "\ 15:00", instância "{3dd46ca9-c525-4796-86b5-5e513fd45f26}", ação "C: \ Arquivos de programas (x86) \ PHP \ v5.4 \ php .exe "com código de retorno 0.
Eu já vi essa pergunta Tarefa agendada executando duas vezes de tempos em tempos, o que aponta para um erro em http://support.microsoft.com/kb/2461249, sendo a causa. No entanto, isso não inclui o Server 2012 em sua lista de sistemas operacionais com problemas.
Estou lutando para explicar isso, mais alguém pode?
A exportação XML para a tarefa agendada é:
<?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>
29 de outubro 17:00 - Atualização - Ambos os servidores executaram novamente a tarefa agendada às 15:00 e 16:00. Agora eu atualizei o arquivo php que é executado pelo agendador para não fazer nada enquanto estou tentando resolver isso. Estou planejando reiniciar um servidor para ver se isso muda alguma coisa amanhã.
30 de outubro, 08:25 - Atualização - Ao exportar o XML da tarefa, lembrei-me de que não havia incluído o fato de que a tarefa agendada no segundo servidor foi criada importando o XML da tarefa criada no primeiro. A única diferença entre as duas tarefas é o caminho do arquivo php que eles estão executando e a conta de usuário em que estão executando.
30 de outubro às 16:30 - Atualização - O servidor que foi reiniciado não está mais mostrando esse comportamento; a tarefa agendada foi executada uma vez. Vou esperar alguns dias antes de reiniciar o segundo servidor, caso alguém tenha alguma idéia sobre como diagnosticar por que / como aconteceu
06 de novembro 18:00 - Atualização - Aplicamos todas as atualizações no segundo servidor e reiniciamos. Assumimos que isso resolveria o problema; no entanto, as 15h rodavam duas vezes novamente - uma vez às 15h e novamente às 16h. Eu olhei para outros trabalhos programados e eles foram executados apenas uma vez.
fonte
Respostas:
Acabamos de notar o mesmo problema em nossos servidores de produção (também Windows Server 2012), que ocorreu nesta semana. Também começou depois que nossos relógios voltaram uma hora (que era 3 de novembro de 2013, aqui em Toronto).
Atualização em 12 de novembro de 2013:
Além disso, após discussões adicionais com a Microsoft (pelo administrador do sistema), a Microsoft disse: "... o problema foi identificado no Windows Server 2012 e foi corrigido apenas na próxima versão do Windows, que é o Windows 8.1 / Windows Server 2012 R2" .
fonte
Eu tive esse problema surgido esta semana desde a mudança do horário de verão. Sei que essa não é uma ótima resposta, mas excluir e recriar o trabalho parece resolver o problema. Eu testei em alguns trabalhos que foram duplicados durante a noite e os trabalhos recriados não foram duplicados.
fonte
Podemos reproduzir o erro quando o trabalho foi agendado para UTC + 0 (servidor Windows 2012 R2).
Por exemplo, tivemos um trabalho sendo executado em datas erradas, agendadas às 2 da manhã.
Como nosso fuso horário é UTC + 2, o trabalho foi executado no UTC + 0.
Parece que o Windows tem alguns problemas de arredondamento. Talvez ele use o UTC internamente e se o trabalho for executado exatamente no UTC + 0, alguns erros de arredondamento ou condições de corrida farão com que o trabalho seja executado nas datas erradas.
Também vimos trabalhos, que são executados conforme o planejado, mas após a reinicialização, relatamos:
Após alterar o horário agendado para, por exemplo, 2:02, os erros desapareceram.
fonte