2010-12-01 98 views
-1

我們正面臨VB.NET監聽器的一個問題,它在運行服務器的機器中利用高CPU(50%到70%)。聽衆正在使用線程概念,並且我們還使用FileSystemWatcher類來保持監視文件重命名指向一個公共位置。兩者都是控制檯應用程序和預定作業全天運行。你能幫我解決如何通過這個FileSystemWatcher類來控制CPU利用率嗎?CPU利用率高 - VB.NET

+1

你有沒有運行一個探查器來找出時間到了哪裏? – 2010-12-01 07:21:21

回答

1

這可能都取決於您正在運行的代碼。

例如,如果您有一個間隔爲10毫秒的計時器,但每隔2分鐘工作一次,並且在每個計時器間隔上進行很多檢查,則需要大量的CPU才能不做任何事情。

如果您正在使用多個線程,並且一個正在循環等待第二個釋放鎖(Monitor.TryEnter()),那麼這可能會佔用額外的CPU。您可以通過將等待線程放入Monitor.Wait(),然後在忙線程完成時執行Monitor.Pulse()來避免這種情況。

除了上面非常一般的建議,如果您發佈代碼或配置文件結果的關鍵部分,那麼我們可能會提供更多幫助。

如果你正在尋找一個分析器,我們使用RedGates ANTS Profiler(成本,但免費試用),它給出了很好的結果,我沒有使用任何其他比較(我沒有任何關聯的RedGate)所以其他人可能會更好。

希望這可以幫到一些人。