サービスは、開始要求または制御要求にタイムリーに応答しませんでした


2

検索しましたが、適切な答えが見つかりませんでしたので、独自の質問を作成します。Windows 2003 SP2サーバーがいくつかあり、それぞれがローカルマシンとWindows共有の両方から起動された.NETサービスを実行しています。ただし、2回目にエラーが発生します:エラー1053: 特定のサーバーでサービスを再起動しようとしたときに、サービスが開始要求または制御要求にタイムリーに応答しませんでした。実行可能ファイルとの共有が利用可能で、正常に開き、適切な権限があります。そのため、両方のサーバーですべてが同じように見えますが、起動するすべてのサービスにそのエラーが発生します。そのサーバーを再起動すると、数日または1週間正常に動作し、その後再び起動します。

誰でもそれが何であるか提案がありますか?

回答:


1

Microsoftから入手可能なホットフィックスがあります。

http://support.microsoft.com/kb/886695

この問題は、Iisutil.dll DLLがシステムコンテキストで実行されるサービスのデスクトップセキュリティ記述子にアクセス制御エントリ(ACE)を追加するために発生します。ACEにより、Microsoftインターネットインフォメーションサービスワーカープロセスグループ(IIS_WPG)アカウントはシステムサービスデスクトップにログオンできます。ただし、別のプロセスがシステムコンテキストで実行されるサービスのデスクトップセキュリティ記述子をNULL値に設定すると、Iisutil.dllは随意アクセス制御リスト(DACL)を変更します。Iisutil.dllはDACLリストを変更して、非対話型のローカルシステムアカウントを使用するサービスがログオンできないようにします。


1

誰でもそれが何であるか提案がありますか?

聞きたいことではありませんが、ほとんど何でも可能です。現時点で、あなたが本当に知っているのは、サービスが起動またはシャットダウンに時間がかかりすぎることです。

.Netサービスを開発した人に戻って、問題の診断に役立つかどうかを確認する必要があります。

ただし、その前に、再起動を使用する代わりに、2つの異なるアクションとしてサービスを停止および開始することをお勧めします(それらの間に短い遅延があります)。これは、問題の原因がサービスのシャットダウン時か、バックアップの開始時かを判断するのに役立つ場合があります。また、開始と停止の成功にかかる時間を判断できれば、役に立つかもしれません。

また、イベントログをチェックして、他の情報が記録されているかどうかを確認する必要があります。

サービスが開始されると、最初の起動フェーズは特定の時間(通常は30秒)以内に完了することになっています。したがって、サービスは通常、このセクションのコードの量を最小限に抑え、バックグラウンドスレッドを開始して残りの作業を実行しようとします。

同様に、サービスを停止すると、特定の時間(通常は20秒)以内にそのプロセスを完了することになっています。これは、操作が完了するまで待機するのではなく、サービスがシャットダウンされている場合にキャンセルできるように、長時間実行される操作を記述する必要があることを意味します。

起動またはシャットダウンの合計期間が制限を超えると、エラーが発生します。

エラーを引き起こす可能性のある例をいくつか示します。起動時に、サービスがコンピューター/サーバー名のDNSルックアップを実行しているとします。通常、これには数ミリ秒かかりますが、サーバーでDNSが正しく構成されていない場合、完了に15秒以上かかる可能性があります。2回目の試行では、DNSエントリがキャッシュされているため、適切な制限時間内に機能する場合があります。

もう1つの可能性は、サービスがスリープ状態になったデバイスまたはリソースに依存しており、スリープ解除にかかる時間が制限を超えていることです。2回目にサービスを試行すると、デバイスはすでに起動しており、タイムリーに応答します。

.Netサービスが広く使用されている場合、幸運なことに、インターネット上の他の誰かが同様の問題を抱えており、解決策を見つけていることがわかります。しかし、実際の原因は、起動時とシャットダウン時にサービスが実際に行っていることに大きく依存しているため、開発者と話をした方がよいでしょう。

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