解决Hangfire 导致服务器内存飙涨

最近因为项目需要调度作业服务,之前看张队推荐过一篇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给他分析,看看是不是内存泄露

解决Hangfire 导致服务器内存飙涨_第1张图片

 

 无内存泄露!

 

注释掉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逻辑处理器,果断修改配置:

解决Hangfire 导致服务器内存飙涨_第2张图片

 

 

再次启动,一个健康检查api作业(直接return ok),每15s执行一次,内存保持在35M左右:

解决Hangfire 导致服务器内存飙涨_第3张图片

 

 

 问题阶段性的解决了。

 

疑惑:

1、同一服务器上的另一个.net core api  内存不涨(间隔5s被请求一次)

2、猜想是服务器os  win2012r2   太古老的原因

 

遗留问题:

本地测试 /job-read能正常访问, 部署到服务器外网无法访问,服务器本机能访问  难道job与 job-read 走不通的端口?被防火墙掉呢?

本人对hangfire不熟悉,望哪位仁兄知道告知我一下,谢谢!

 

你可能感兴趣的:(解决Hangfire 导致服务器内存飙涨)