Windowsタスクスケジューラが複数のインスタンスを起動しようとするのはなぜですか?


9

クラスター内にある1つのServer 2008 Webサーバー(R2ではない)で実行されるWindowsスケジュールタスクがいくつかあります。

最近、元のウェブサーバークラスターから新しいウェブサーバークラスター(サーバー2008-R2ではない)に移動しました。

Windowsタスクを実行する(クラスター内の)新しいWebサーバーは、私たちが信じている元のサーバーと同じように設定されています。

しかし、新しいWindowsサーバーでは、Windowsタスクスケジューラが各タスクを3回瞬時に開始したいように見えることがわかりました。

新しいタスクをキューに入れるオプションを設定すると、次のようになります。

イベントID 324タスクスケジューラは、タスク "\ Client Reporting"のインスタンス "{9a1a8411-b042-45ff-8e6b-89874df230d7}"をキューに入れ、インスタンス "{2bcc3df6-ea3b-4453-90c2-75b8b1946388}"が完了するとすぐにインスタンスを起動します。

既存のタスクを停止するオプションを設定すると、次のようになります。

イベントID 323タスクスケジューラは、新しいインスタンス「{4db66265-1f51-4ede-8535-ac7c3cb5c4c1}」を起動するために、タスク「\ Client Reporting」のインスタンス「{e685a910-b32b-414e-85fd-96bbe54314a2}」を停止しました。

チェックされた設定:

  • タスクをオンデマンドで実行できるようにします。

  • スケジュールされた開始を逃した後、できるだけ早くタスクを実行します。

  • 1時間以上実行している場合は、タスクを停止します。

  • 要求されたときに実行中のタスクが終了しない場合は、強制的に停止します。

  • コンピューターがAC電源で動作している場合にのみ、タスクを開始します。

  • コンピューターがバッテリー電源に切り替わった場合は、タスクを停止します。

選択したオプション:タスクが既に実行されている場合-既存のインスタンスを停止します。

注:タスクをクラスター内のあるサーバーから別のサーバーに移動して、選択した特定のサーバーのタスクスケジューラが問題の原因であるかどうかを確認しました。同じ行動。

新しいサーバーの構築に関係があるのでしょうか?

別のサーバークラスターに非常によく似たタスクがセットアップされており、これらすべてを何度も起動しなくても問題なく動作します。これらのタスクをここでのタスクと比較すると、タスクスケジューラ内のオプションを通じて利用できる設定に関して、明らかに異なるものは何もないようです。

トリガー:タスクは毎日1時間に1回トリガーされ、この時間を超えると停止するようにスケジュールされます。

アクション:.batファイルを実行します。

これを引き起こしている可能性のあるもの/タスクがこの方法で複数回開始する原因となっているロジックを確認できる場所はどこですか?


タスクをトリガーするために何が設定されていますか?
Bart Silverstrim 2012年

回答:


3

これは、KB2617046で説明されている問題です。スケジュールされたタスクを無効にしてから有効にすると、重複したトリガーが作成されます。タスクのプロパティには1つのトリガーのみが表示されますが、タスクの履歴でタスクが同時に複数回トリガーされていることがわかります。

マイクロソフトから入手可能な修正プログラムがあります。ホットフィックスはVista用であると述べていますが、Server 2008 SP2で動作します。修正プログラムを適用した後、重複を取り除くために、タスクのトリガーを無効にしてから再度有効にする(変更を適用するためにトリガーのプロパティウィンドウを閉じる)必要があります。



Windows Server 2016でも同様の問題が発生しています。タスクが開始され、正しく実行されたことがわかります。数十回の再試行が試行されます。残念ながら、上記のリンクはすべて壊れています。適切に設定されており、設定された間隔で1回だけ実行されますが、履歴が警告で溢れます。Windows Server 2016に同様の問題があり、修正されている場合、何か考えはありますか?ありがとう。
Alexei

1

Windowsタスクスケジューラが複数のプロセスを起動するのを止めることができました。 "タスクが失敗した場合、次の間隔で再起動します:"オプションをデフォルトの "1分"と "再起動の試行回数:3回"に設定しました。

これは直感に反するように見えました

  1. タスクが失敗しているように見えなかった(タスクが実行するアクションが複数回実行された)

2.いずれにしても、タスクは既に3回開始することを決定しているようです。

また、テストWebサーバーでこれらと同じタスクをセットアップしており、このオプションをオンにする必要はありません。


0

何らかの理由で回答にコメントを追加することはできませんが、タスクが0以外の終了コードを返すため、「失敗」する可能性があります。実際のタスクプロセスの代わりに実行するようにスクリプトをスケジュールすることで、これを修正できます。スクリプトで実際のタスクプロセスを実行し、スクリプトが完了したら、プロセスの終了コードを既知の成功コードのリストと照合します。成功した場合は、スクリプトをコード0で終了させ、成功しなかった場合は、失敗の終了コードを渡します。これにより、実際に失敗した場合にタスクスケジューラがタスクを再実行する機能を保持できます。

残念ながら、正常に実行されたプロセスが0以外の終了コードを返すことは珍しいことではありません。さまざまな終了コードについて、ドキュメントを確認する(または開発者に問い合わせる)必要があります。


他のユーザーの質問と回答にコメントするには50人の担当者が必要です...
EEAA 2013年

EEAAに感謝します。そして私の投稿をフォローアップするために、Pualはすべてバッチスクリプトを実行する準備ができているようです。スクリプトの内容と返される終了コードがわからないのに、なぜそれが0以外のコードを返すのかはわかりませんが、コメント/回答は正しいはずですが、タスクスケジューラは終了コードを返すと想定していますない場合は0。
Matt

0

数か月前にWinServer2008 R2でこの問題に直面しました。多くの解決策を試しましたが、何も問題を解決しませんでした。

次は問題を解決するようです:タスクスケジューラアプリケーション:タスクを選択します:次に右メニューから[終了]をクリックすると、「このタスクのすべてのインスタンスを終了しますか?」「はい」をクリックします。

これで問題が解決することを願っています。


-1

同じ問題がここで発生しているすべてのタスクがキューに入るので、実行中のすべてのタスクを参照するか、キューにあるすべてのタスクを終了し、サーバーを再起動して修正しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.