Lập lịch tác vụ chạy một nhiệm vụ hai lần


10

Cập nhật: Điều này đã xảy ra hai ngày liên tiếp.

Cập nhật: XML của các tác vụ và hình ảnh theo lịch trình hiện đã bao gồm.

Hai máy chủ đặt tại London, cả Windows 2012, có một tác vụ theo lịch trình được thiết lập để chạy vào lúc 3 giờ chiều từ thứ Hai đến thứ Sáu. Điều này đã được thiết lập trong 5 tháng qua mà không có vấn đề gì.

Tuy nhiên, vào thứ Hai ngày 28 tháng 8, cả hai đã chạy nhiệm vụ theo lịch trình vào lúc 3 giờ chiều và sau đó lại vào lúc 4 giờ chiều. Khi nó được báo cáo lần đầu tiên, tôi nghĩ rằng đó là quá nhiều sự trùng hợp ngẫu nhiên là một ngày sau khi đồng hồ đã quay trở lại một giờ. Tuy nhiên, tôi không thể giải thích được tại sao nó lại xảy ra và liệu nó có liên quan đến sự thay đổi của đồng hồ hay không.

Các nhật ký có liên quan từ một máy chủ (các nhật ký cho máy chủ khác cũng theo mẫu này):

Sự kiện 129 15:00:20 Tác vụ khởi chạy Trình lập lịch tác vụ "\ 3pm", ví dụ "C: \ Chương trình tệp (x86) \ PHP \ v5.4 \ php.exe" với ID tiến trình 2388.

Sự kiện 100 15:00:20 Trình lập lịch tác vụ đã bắt đầu "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" của tác vụ "\ 3pm" cho người dùng "x \ y".

Sự kiện 200 15:00:20 Trình lập lịch tác vụ đã khởi chạy hành động "C: \ Chương trình tệp (x86) \ PHP \ v5.4 \ php.exe" trong trường hợp "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}" của tác vụ "\ 3 giờ chiều ".

Sự kiện 201 15:00:23 Trình lập lịch tác vụ đã hoàn thành thành công nhiệm vụ "\ 3pm", ví dụ "{75a3590f-dec1-4dee-bd27-73d63a50a9d7}", hành động "C: \ Chương trình tệp (x86) \ PHP \ v5.4 \ php .exe "với mã trả về 0.

Sự kiện 129 16:00:20 Tác vụ khởi chạy Trình lập lịch tác vụ "\ 3pm", ví dụ "C: \ Chương trình tệp (x86) \ PHP \ v5.4 \ php.exe" với ID tiến trình 1224.

Sự kiện 100 16:00:20 Trình lập lịch tác vụ đã bắt đầu "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" của tác vụ "\ 3pm" cho người dùng "x \ y".

Sự kiện 200 16:00:20 Trình lập lịch tác vụ đã khởi chạy hành động "C: \ Chương trình tệp (x86) \ PHP \ v5.4 \ php.exe" trong trường hợp "{3dd46ca9-c525-4796-86b5-5e513fd45f26}" của tác vụ "\ 3 giờ chiều ".

Sự kiện 201 16:00:23 Trình lập lịch tác vụ đã hoàn thành thành công nhiệm vụ "\ 3pm", ví dụ "{3dd46ca9-c525-4796-86b5-5e513fd45f26}", hành động "C: \ Chương trình tệp (x86) \ PHP \ v5.4 \ php .exe "với mã trả về 0.

Tôi đã thấy câu hỏi này Tác vụ theo lịch trình chạy hai lần theo thời gian , điều này dẫn đến một lỗi tại http://support.microsoft.com/kb/2461249 là nguyên nhân. Tuy nhiên, điều này không bao gồm Server 2012 trong danh sách các hệ điều hành có vấn đề.

Tôi đang đấu tranh để giải thích điều này, bất cứ ai khác có thể?

Xuất khẩu XML cho tác vụ theo lịch trình là:

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

Cấu hình kích hoạt cho tác vụ theo lịch trình Lịch sử cho nhiệm vụ theo lịch trình

29 tháng 10 17:00 - Cập nhật - Cả hai máy chủ đã chạy lại tác vụ theo lịch trình lúc 15:00 và 16:00. Bây giờ tôi đã cập nhật tệp php được chạy bởi trình lập lịch biểu để không thực sự làm bất cứ điều gì trong khi tôi đang cố gắng giải quyết vấn đề này. Tôi đang lên kế hoạch khởi động lại một máy chủ để xem điều này có thay đổi gì vào ngày mai không.

30 tháng 10 08:25 - Cập nhật - Khi xuất XML nhiệm vụ, tôi nhớ rằng tôi đã bao gồm thực tế rằng tác vụ theo lịch trình trên máy chủ thứ hai được tạo bằng cách nhập XML của tác vụ được tạo vào lần đầu tiên. Sự khác biệt duy nhất giữa hai tác vụ là đường dẫn của tệp php mà chúng đang thực thi và tài khoản người dùng mà chúng đang chạy.

30 tháng 10 16:30 - Cập nhật - Máy chủ đã được khởi động lại không hiển thị hành vi này nữa, tác vụ theo lịch trình đã chạy một lần trên nó. Tôi sẽ đợi vài ngày trước khi khởi động lại máy chủ thứ hai trong trường hợp bất kỳ ai có bất kỳ ý tưởng nào về chẩn đoán tại sao / làm thế nào nó xảy ra

06 tháng 11 18:00 - Cập nhật - Chúng tôi đã áp dụng tất cả các bản cập nhật cho máy chủ thứ hai và khởi động lại. Chúng tôi giả định rằng điều này sẽ giải quyết vấn đề, tuy nhiên 3 giờ chiều lại chạy hai lần - một lần vào lúc 3 giờ chiều và một lần nữa vào lúc 4 giờ chiều. Tôi đã xem xét các công việc theo lịch trình khác và họ chỉ chạy một lần.


Không thể thay đổi do thời gian thay đổi nếu là ngày hôm sau và thời gian trong nhật ký phản ánh thời gian chính xác (có nghĩa là nếu đó là vấn đề thời gian bạn sẽ thấy nó chạy hai lần nhưng cả hai lúc 3 giờ chiều không phải mỗi lần). Thành thật mà nói, nếu nó chỉ xảy ra một lần vào tháng 8, tôi sẽ có xu hướng nói "lỗi / dị thường / ma" và tiếp tục. Nhưng có lẽ ai đó có thể làm sáng tỏ bạn ở đây ...
TheCleaner

29 tháng 10 17:00 - Cập nhật - Cả hai máy chủ đã chạy lại tác vụ theo lịch trình lúc 15:00 và 16:00. Bây giờ tôi đã cập nhật tệp php được chạy bởi trình lập lịch biểu để không thực sự làm bất cứ điều gì trong khi tôi đang cố gắng giải quyết vấn đề này. Tôi đang lên kế hoạch khởi động lại một máy chủ để xem điều này có thay đổi gì vào ngày mai không.
Ross Buggins

1
Bạn có thể giúp chúng tôi xin vui lòng và đăng xuất khẩu XML của tác vụ theo lịch trình để chúng tôi có thể xem các tham số thực sự của nó là gì không?
Ryan Ries

chỉ để được chắc chắn: bạn đã kiểm tra tùy chọn Kích hoạt "Đồng bộ hóa giữa các múi giờ"? Sau đó, Bộ lập lịch tác vụ đang sử dụng UTC.
Manfred Schmidt

Không, đó không phải là đánh dấu. Tuy nhiên, với đánh dấu đó tôi không nghĩ rằng đó là hành vi mà tôi yêu cầu. Tôi muốn nhiệm vụ chạy vào lúc 3 giờ chiều giờ địa phương, với điều đó tôi có tin rằng nó sẽ hết một giờ trong BST không?
Ross Buggins

Câu trả lời:


4

Chúng tôi chỉ nhận thấy vấn đề tương tự trên các máy chủ sản xuất của chúng tôi (cũng là Windows Server 2012), xảy ra trong tuần này. Nó cũng bắt đầu sau khi đồng hồ của chúng tôi quay trở lại một giờ (đó là ngày 3 tháng 11 năm 2013, tại Toronto).

Cập nhật vào ngày 12 tháng 11 năm 2013:

  • Khởi động lại không hoạt động (tác vụ tiếp tục chạy hai lần)
  • Xuất và nhập lại các tác vụ không hoạt động (các tác vụ tiếp tục chạy hai lần)
  • Tạo lại thủ công tác vụ trong GUI sẽ khắc phục sự cố

Ngoài ra, sau khi thảo luận thêm với Microsoft (bởi quản trị viên hệ thống của chúng tôi), Microsoft cho biết: "... sự cố đã được xác định trong Windows Server 2012 và chỉ được khắc phục trong bản phát hành tiếp theo của Windows là Windows 8.1 / Windows Server 2012 R2" .


Chúng cũng được nhập bởi các tệp XML phải không? Xem bình luận của tôi để trả lời Stijn
Ross Buggins

Chúng tôi có khoảng 10 nhiệm vụ. Những cái được nhập bằng tay (tôi chắc chắn có nguồn gốc đó, vì tôi mới tạo các tác vụ) KHÔNG có vấn đề hai lần chạy. Một số tác vụ khác được nhập từ XML và có vấn đề. Chúng tôi sẽ thử khởi động lại vào ngày mai và sẽ tiếp tục với Microsoft
Warren Stevens

Thêm một lưu ý: Chúng tôi không kiểm tra "Đồng bộ hóa giữa các múi giờ" cho bất kỳ nhiệm vụ nào (trong trường hợp có vấn đề)
Warren Stevens

Từ quản trị viên hệ thống của chúng tôi: "... Đã có một phiên với Microsoft, họ đã thấy điều này trước đây nhưng không thể nói chính xác nguyên nhân gây ra nó. Bây giờ họ yêu cầu chúng tôi thử khởi động lại máy chủ và cũng thử tạo lại các tác vụ. Không có hotfix có thể cài đặt để giải quyết vấn đề này vì họ đã nói rằng các khách hàng khác bị ảnh hưởng có thể giải quyết bằng cách khởi động lại hoặc tạo lại các tác vụ ... "
Warren Stevens

1
Chúng tôi đang chạy Windows 2016 và đang gặp vấn đề tương tự (công việc được nhập từ Windows 2012)
Greg

1

Tôi đã gặp vấn đề này trong tuần này kể từ khi chuyển đổi DST. Tôi biết đây không phải là một câu trả lời hay, nhưng xóa và tạo lại công việc dường như để giải quyết vấn đề. Tôi đã thử nghiệm trên một vài công việc đã được nhân đôi qua đêm và các công việc được tạo lại không trùng lặp.


0

Chúng tôi có thể tái tạo lỗi khi công việc được lên lịch tới UTC + 0 (máy chủ Windows 2012 R2).
Ví dụ: Chúng tôi có một công việc chạy sai ngày được lên kế hoạch lúc 2 giờ sáng.
Vì múi giờ của chúng tôi là UTC + 2, công việc đã chạy ở UTC + 0.
Có vẻ như Windows có một số vấn đề làm tròn. Có lẽ nó sử dụng UTC trong nội bộ và nếu công việc chạy chính xác ở UTC + 0, một số lỗi làm tròn hoặc điều kiện cuộc đua khiến công việc chạy sai ngày.
Chúng tôi cũng thấy các công việc chạy theo kế hoạch nhưng sau khi khởi động lại, đã báo cáo:

Nhà điều hành hoặc quản trị viên đã từ chối yêu cầu (0x800710E0)

Sau khi thay đổi thời gian dự kiến ​​thành 2:02 sáng, các lỗi đã biến mất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.