情景是這樣的,我這邊是客戶端,要向很多個機器人請求資料,有的機器人可能沒開機是連接不上的,我這邊開了很多個執行緒,不停的去請求資料,請求完就關閉連接,有的機器人連接不上就會報錯,但報錯后我也釋放了資源,但記憶體還是呼呼的上漲,一個小時就爆了,這個有什么方式解決嗎
uj5u.com熱心網友回復:
如果情景是你賣出去100w臺,所以你需要主動請求100w臺so正常的方式,他發給你。不是你請求他。
當然呆這里這么多年,我知道你們會說什么,你們會說“我就要這樣,不用你管”
那么我們只能回,與技術無關,這是策略問題。 解決方法:池化,限流,退避,降權,熔斷。
這些詞呢其實不是技術,只是策略。用很多東西都可以實作。目前我們可能推薦的給你的是polly庫
https://www.nuget.org/packages/Polly/
https://github.com/App-vNext/Polly
uj5u.com熱心網友回復:
用redgate 看一下那個記憶體物件最多,適當地用單實體。uj5u.com熱心網友回復:
為什么記憶體會上漲?貼出你的“除錯出來”造成記憶體上漲的代碼,指名具體是哪一行(行號)代碼、哪一個變數的記憶體堆積,不要胡亂說個似是而非的理由。uj5u.com熱心網友回復:
所謂“開執行緒”這是個似是而非的概念。實際上,有些人是抱著“佇列、阻塞、”的思路去設計并發程式,而沒有異步概念。真正的異步不阻塞。例如當同時連接10萬個chanel的時候,不是說阻塞10萬零1個執行緒,假設同時有10給訊息到來也就只有最多10個執行緒去處理。這是異步多執行緒處理,而不是什么阻塞多執行緒處理。
關于多執行緒編程設計,有些人被古老的似是而非的“佇列、生產者-消費者、阻塞、信號量”等等概念給誤導了,而沒有把握關鍵的——不阻塞的——概念。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/216525.html
標籤:C#
上一篇:如何在外部呼叫類屬性?
下一篇:dev 里的gridview 里每列的的標題里的篩選彈出框里的clear filter 功能,有沒有對應的方法?
