最近因為項目需要調度作業服務,之前看張隊推薦過一篇https://www.cnblogs.com/yudongdong/p/10942028.html 故直接拿過來實操,發現很好用,簡單、方便 執行周期webapi任務,nice 發佈到生產環境,順便看看伺服器資源情況,我艹,記憶體,每s漲1M,漲到5 ...
最近因為項目需要調度作業服務,之前看張隊推薦過一篇https://www.cnblogs.com/yudongdong/p/10942028.html
故直接拿過來實操,發現很好用,簡單、方便 執行周期webapi任務,nice
發佈到生產環境,順便看看伺服器資源情況,我艹,記憶體,每s漲1M,漲到500m,關閉host服務,惹不起,什麼原因???
1、本地調試、發佈運行,記憶體正常
2、部署到本地測試伺服器(win2016 core 2.2.7) 記憶體正常
3、發給我朋友的電腦測試 記憶體正常 穩定在130M左右
通過qq聯繫到原作者,讓我dump給他分析,看看是不是記憶體泄露
無記憶體泄露!
註釋掉nlog、他的hangfire.httpjob 組件,再次發佈,記憶體仍然異常。
難道是伺服器core 版本問題,安裝最新2.2.7, 我靠,要重啟伺服器,生產伺服器,放棄!
最後 作者提醒我,是可能沒GC到的原因。
故搜到兩篇文章:
https://www.cnblogs.com/maxzhang1985/p/7836088.html
https://www.cnblogs.com/smark/p/9899657.html
忽然想到伺服器是2個cpu,40邏輯處理器,果斷修改配置:
再次啟動,一個健康檢查api作業(直接return ok),每15s執行一次,記憶體保持在35M左右:
問題階段性的解決了。
疑惑:
1、同一伺服器上的另一個.net core api 記憶體不漲(間隔5s被請求一次)
2、猜想是伺服器os win2012r2 太古老的原因
遺留問題:
本地測試 /job-read能正常訪問, 部署到伺服器外網無法訪問,伺服器本機能訪問 難道job與 job-read 走不通的埠?被防火牆掉呢?
本人對hangfire不熟悉,望哪位仁兄知道告知我一下,謝謝!