2017-05-15 18 views
0

私はタイマーで動作し、処理するリモートディレクトリのファイルを探すvb.netでカスタムWindowsサービスを構築しました。いくつかのサーバーでは、VSSサービスが失敗したときに午後10時04分頃、同じ時刻に何のエラーもなく失敗します。サービスエラーは次のようになります。VSSバックアップが原因でカスタムWindowsサービスが失敗する

'プロセスは、別のプロセスによって使用されているため、filename.txtファイルにアクセスできません。

時々エラーはありませんが、サービスがハングします。私はこれがVSSサービスであると仮定しています。それにもかかわらず、CPUには最大100%の膨大なスパイクがあります。 私はすべてのアクティビティを私に中継するログ(つまり上に書いたファイルはありません)を持っています。また、各プロセスはtry..catchでラップされています。これの何も来ません。プロセスは通常、ポーリングタイマーで、時には警告なしで処理の途中で、コードのランダムな部分で失敗します。サービスはハングアップしますが、まだservices.mscで動作していると言います。

誰でもこの問題を経験したことがありますか?私はサービスをマルチスレッドにすることを考えていたので、あるスレッドがハングしても問題が解決するかどうかは分かりません。私たちはサーバーに多くのリソースを提供しようとしましたが、これは少し助けてくれたようですが、問題を完全には解決していません。ある日は過負荷になり、他の人はそれをやりません。 Windows Server 2008 x64を使用しています。

ご協力いただきありがとうございます!

Public Shared aTimer As New Timers.Timer 

    Public Shared Sub SetTimer() 
     aTimer.Interval = 60000 
     ' Hook up the Elapsed event for the timer. 
     AddHandler aTimer.Elapsed, AddressOf OnTimedEvent 
     aTimer.Enabled = True 

    End Sub 

    ' The event handler for the Timer.Elapsed event. 
    Private Shared Sub OnTimedEvent(source As Object, e As ElapsedEventArgs) 
     Dim gen = New Service1 
     aTimer.Enabled = False 
     gen.ProcessEvents() 'This is the main function of the service 
     aTimer.Enabled = True 
    End Sub 

答えて

0

更新:

は、このような単純な解決策を考えたことがなかったが、タスクマネージャでは、私は適切なサービスをクリックし、高いCPU負荷ことを期待して「リアルタイム」に優先順位を設定バックアップ中はサービスに影響しません。ここまでは順調ですね。

これはプログラムによって実行できるため、サービスが再起動されるたびに優先度が高くなります。

VB.NET:

System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.RealTime 
これは私のOnStart()であります
関連する問題