汎用スクリプト リソースのサーバー クラスタが応答を停止する

文書翻訳 文書翻訳
文書番号: 811685 - 対象製品
すべて展開する | すべて折りたたむ

目次

現象

有効な汎用スクリプトのリソースが存在するクラスタでは、クラスタが応答しなくなることがあります。クラスタ アドミニストレータと Cluster.exe が、応答を停止 (ハングアップ) しているように見えることがあります。汎用スクリプトのリソース内でスレッドがブロックされているというメッセージがクラスタ ログに出力されます。たとえば、以下が表示されます。
000007c4.000007e4::2002/12/12-19:17:03.781 INFO [FM] FmpRmOnlineResource: called InterlockedIncrement on gdwQuoBlockingResources for resource f37f58fb-03ff-44b3-a4d7-086b0838d73d
イベント ログには、以下のいずれかのようなメッセージが含まれています。

イベント ID : 1232
イベントの種類 : エラー
イベント ソース : ClusSvc
クラスタ汎用スクリプト リソース MyScript がタイムアウトしました。 %2 スクリプトのエントリ ポイントが時間内に実行を完了しませんでした。このエントリ ポイントでの無限ループまたはハング、あるいは待ちのタイムアウトがこのリソースに対して短すぎることが原因である可能性があります。%2 スクリプトのエントリ ポイントを確認して、スクリプト コードに無限ループやハングがないことを確認し、必要な場合は待ちのタイムアウトの値を大きくすることを検討してください。コマンド シェルでは ""cluster res ""MyScript"" /prop PersistentState=0""を実行してこのリソースを無効にし、""net stop clussvc"" を実行してクラスタ サービスを停止してください。スクリプト コードの問題を確実に解決してください。その後、""net start clussvc"" を実行してクラスタ サービスを開始してください。必要に応じて、リソースを再びオンラインにする前に、待ちのタイムアウトが大きくされたことを確認してください。

または

イベント ID : 1233
イベントの種類 : エラー
イベント ソース : ClusSvc
クラスタ汎用スクリプト リソース MyScript: %2 操作の要求は処理されません。これは、前回 %3 エントリ ポイントを時間内に実行しようとして失敗したためです。スクリプト コードのこのエントリ ポイントを確認して、無限ループやハングがないことを確認し、必要な場合はリソースの待ちのタイムアウトの値を大きくすることを検討してください。コマンド シェルでは ""cluster res ""MyScript"" /prop PersistentState=0""を実行してこのリソースを無効にし、""net stop clussvc"" を実行してクラスタ サービスを停止してください。スクリプト コードの問題を確実に解決してください。その後、""net start clussvc"" を実行してクラスタ サービスを開始してください。必要に応じて、リソースを再びオンラインにする前に、待ちのタイムアウトが大きくされたことを確認してください。

原因

以下のいずれかの状態と一致する場合、汎用スクリプトのリソース スクリプトが原因で、クラスタ全体が応答を停止するか、応答しなくなる可能性があります。
  • 汎用スクリプトのリソース スクリプトには、無限ループが含まれています (したがって、終了できません)。
  • 特定のクラスタ API への呼び出しが発生しています。そのクラスタ API は、クラスタ全体のデッドロックの原因となる場合があるため、この API をリソース DLL やリソース スクリプト内で使用しないようにする必要があります。このスクリプトは、手順の 1 つとして、クラスタ API を呼び出しているか、Cluster.exe を開始していることがあります。この Cluster.exe は、回避する必要のあるクラスタ API を呼び出す可能性があります。リソース DLL またはスクリプトから呼び出してはいけない API の情報については、Microsoft Platform SDK (PSDK) の「Function Calls to Avoid in Resource DLLs」を参照してください。
  • 汎用スクリプトのリソース スクリプトが実行している操作にかかる時間が、タイムアウトまでの待ち時間の値より長くなります。
無制限にハングアップする状況を回避するために、クラスタ リソース モニタは操作が待ちのタイムアウト値を超えると、このスクリプトで Online、Offline、IsAlive、および LooksAlive などの操作を実行することを拒否します。そのリソースで汎用スクリプトのリソース操作を新たに実行しようとすると、この資料の「現象」で示している 2 つ目のイベント ログ メッセージが表示されます。

解決方法

クラスタ リソース モニタは、エントリ ポイントのいずれかがタイムアウトまでの待ち時間の値を超えた後、汎用スクリプトのリソースで新たな操作を実行しなくなります。ただし、問題のあるスレッドは引き続き動作します。この問題を解決するには、リソースを無効にし (つまり、リソースがオンラインにならないようにします)、クラスタ サービスを停止し (これにより問題のあるスレッドが終了します)、スクリプトの問題を修正して、クラスタ サービスを再開します。この問題の原因によっては、このリソースに対するオンラインまたはオフラインのタイムアウトまでの待ち時間の値を増やす必要が生じる場合があります。順を追った操作方法については、この資料の後半の「クラスタ サービスの回復と再開」を参照してください。

待ちのタイムアウト値の変更

すべてのクラスタ リソース操作は、待ちのタイムアウト値の範囲内で、実行を正常に完了する必要があります。したがって、スクリプト エントリ ポイントがこの時間を超えた理由を完全に理解するまで、待ちのタイムアウト値を変更しないでください。また、タイムアウト値を超えるまでクラスタは応答しなくなるため、この値を増加した場合に生じる影響をすべて検討してください。

クラスタ サービスの回復と再開

  1. 次のコマンドを入力して、リソースを無効にします (この例のリソース名は MyScript)。
    cluster resource "MyScript" /properties PersistentState=0
  2. コンソール ウィンドウで次のコマンドを入力し、現在このリソースのグループを所有しているノードのクラスタ サービスを停止します。
    net stop clussvc
  3. スクリプトで確認された問題 (スクリプトの応答停止、ループ、または待ちのタイムアウト値を超える原因) をすべて解決します。待ちのタイムアウト値を増加することが適切であると考えられる場合は、値を増加したときに生じる影響を注意深く検討してください。
  4. 次のコマンドを入力して、クラスタ サービスを再開します。
    net start clussvc
  5. クラスタ アドミニストレータまたは Cluster.exe を使用して、リソースを手動でオンラインに戻します。この操作を行うには、次のコマンドを入力します。
    cluster resource “MyScript” /online
    リソースをオンラインに戻すと、自動的に PersistentState が 1 に設定されるため、値を 0 から 1 に変更するための追加のコマンドは不要です。

状況

マイクロソフトでは、この問題をこの資料の冒頭に記載したマイクロソフト製品の問題として認識しています。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 811685 (最終更新日 2003-04-09) を基に作成したものです。

プロパティ

文書番号: 811685 - 最終更新日: 2005年5月20日 - リビジョン: 5.3
この資料は以下の製品について記述したものです。
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Web Edition
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows Server 2003, 64-Bit Datacenter Edition
キーワード:?
kbbug KB811685
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com