Я создал пользовательские службы Windows в vb.net, которые запускаются по таймеру и ищут файлы в удаленном каталоге для обработки. На нескольких серверах они выходят из строя без каких-либо ошибок в одно и то же время, около 22:04, когда происходит сбой службы VSS. Ошибки сервиса выглядят так:
«Процесс не может получить доступ к файлу filename.txt, поскольку он используется другим процессом».
Иногда ошибок нет, но служба зависает. Я предполагаю, что это служба VSS. Несмотря на это, происходит огромный всплеск загрузки ЦП до 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