c# windows服務程式 ,是一個接收gps定位資料的服務器
偶發出現卡死服務器電腦的情況,狀況是cpu瞬間跑滿,滑鼠鍵盤無反應,必須按電源鍵關閉服務器。
大致找了下重現規律,平常該程式運行正常,只有服務器剛重啟后很大概率會發生,一打開該應用程式cpu瞬間跑滿電腦死機。
用到多執行緒 加了sleep。不知道會是什么原因,希望各路大神指正
uj5u.com熱心網友回復:
剛開機,很多依賴服務和環境尚未準備好所以此時如果不先檢查依賴,會有大量的例外,然后重試。
比如gps定位,都還沒連上網那怎么搞?一大堆例外重試,where(true)
uj5u.com熱心網友回復:
不是剛重啟,是每次重啟服務器后可能會發生這個情況。
確定作業系統已經正常啟動了,系統啟動好后隔幾個小時再打開該應用程式也是會出現這個問題
uj5u.com熱心網友回復:
你這個要找到原因,用盡一切手段,log檔案,程式回圈體,異步偵聽程式。條件允許的話,自己的機子日夜跑,多打日志。把原因搞清楚,才有對應的解決方案。uj5u.com熱心網友回復:
如果服務器CPU 核心數量較多,服務又是多執行緒的,如果代碼里使用了很多 Lock,易發生死鎖。一旦死鎖 CPU 使用率就會上到 100%。以前曾寫過一個服務用于接收網路資料,Lock 沒用好就發生過此類問題,在普通機器上(4核心 CPU)沒問題,部署到服務器上(雙路、24核心)就經常發生死鎖,后來去掉了一些不必要的 Lock,并將 Lock 換成 Monitor 后解決了這個問題。uj5u.com熱心網友回復:
程式在什么情況下會使得cpu100%轉載請註明出處,本文鏈接:https://www.uj5u.com/net/43104.html
標籤:C#
上一篇:session一直為空,怎么回事
