内存占用 未知 服务器,服务器很闲,内存使用量不掉下去

讨论了.NET Core应用中内存占用逐渐升高的问题,可能是由于缓存管理、线程死锁、静态类引用、内存泄漏等原因导致。建议检查代码中的缓存设置、避免同步异步方法混用、排查静态类使用,以及关注日志中可能的内存警告。尝试降级.NET Core版本观察情况,并考虑手动垃圾回收,但GC.Collect()无效。
摘要由CSDN通过智能技术生成

主要是 dotnet 占用1.5G 感觉有点多,

weisp

|

园豆:3

(初学一级)

|

2018-08-06 22:19

@weisp: dotnet 的确有点多,我们的生产环境一个 dotnet 进程占用内存不到 500 M

dudu

|

园豆:37655

(高人七级)

|

2018-08-06 22:37

@dudu: 我放在内存里的缓存设了滑动过期时间,应该是会自动回收的呀,很奇怪,使用量一直缓慢增加,就是没看到有下降的动静

weisp

|

园豆:3

(初学一级)

|

2018-08-06 23:04

@dudu: 但有一部份常用数据缓存优先级设置为高,不知道跟这个有没有关系,

_memoryCache.Set(

cacheKey,

navigations,

new MemoryCacheEntryOptions()

.SetSlidingExpiration(TimeSpan.FromMinutes(_appSettings.Redis_ExpiresIn))

.SetPriority(CacheItemPriority.High));

weisp

|

园豆:3

(初学一级)

|

2018-08-06 23:11

@dudu: 我认为重要的数据大量的用了 CacheItemPriority.High

weisp

|

园豆:3

(初学一级)

|

2018-08-06 23:12

@dudu: .net core 有没有什么方法列出所有缓存?原来的.net是有的,.net core 里面没找到,目前我只能自已用列表存储,

weisp

|

园豆:3

(初学一级)

|

2018-08-06 23:16

@dudu:

add6078eaef96781e70f37f2b4566eca.png

今天nginx访问日志确实也比较多,有一百多M

weisp

|

园豆:3

(初学一级)

|

2018-08-06 23:25

@weisp: 遇见过类似问题,可能是在同步方法中调用异步方法引起的,详见 .NET Core中遇到奇怪的线程死锁问题:内存与线程数不停地增长

dudu

|

园豆:37655

(高人七级)

|

2018-08-07 09:52

@weisp: 上面贴的日志内容太多了,建议去掉

dudu

|

园豆:37655

(高人七级)

|

2018-08-07 09:53

@dudu: 好像没有同步方法中调用异步方法,公共构造函数里都用的同步,其它的地方用的是异步,之前还好,没有这么严重,最近升级为.net core 2.1.2 后才这样

weisp

|

园豆:3

(初学一级)

|

2018-08-07 11:41

@weisp: 问题很奇怪,建议仔细检查代码,比如是否单例引用了非单例的实例,LINQ查询是否会造成全表加载到内存中查询,HttpClient 的使用是否有问题

dudu

|

园豆:37655

(高人七级)

|

2018-08-07 13:09

另一台服务器没有这个问题,有没有可能有人在一直攻击我?我看日志里面有一堆的垃圾访问,注入

b78215fa7a2ab76904445fd6ce37a41a.png

weisp

|

园豆:3

(初学一级)

|

2018-08-07 15:11

@dudu: 系统上线有一年多了,应该不是LINQ查询问题

单例引用了非单例 这个我不是很明白

weisp

|

园豆:3

(初学一级)

|

2018-08-07 15:56

@dudu:

db5c1513db0ca629c05cb53e8f0fea2a.png

这种包括条件in 会造成全表加载到内存中查询吗?

weisp

|

园豆:3

(初学一级)

|

2018-08-09 10:18

@weisp: 你可以看一下日志,如果出现全表加载到内存的情况,EF Core 会在日志中报警

dudu

|

园豆:37655

(高人七级)

|

2018-08-09 10:28

@dudu: 我把应用程序降级成了.net core 2.0 ,有一个好处就是,内存到达高峰后会自动重启还是回收我不知道,内存回收,然后又慢慢升高,大概24小时一周期,

但如果是.net core 2.1 内存升高后应用还在坚持,但静态文件不能访问,

为什么我的内存在不忙里不回收呢?但其它压力小点的服务器不会,只有一台访问多的服务器会这样

weisp

|

园豆:3

(初学一级)

|

2018-08-17 09:04

@weisp: 很奇怪,我们用 .net core 2.1 没遇到这个问题

dudu

|

园豆:37655

(高人七级)

|

2018-08-17 09:09

@dudu: 我盯着看,内存上升一点,会回收一点点,但缓慢上升的速度比回收的多,所以慢慢的还是会满,有什么办法手动回收内存吗?

weisp

|

园豆:3

(初学一级)

|

2018-08-25 22:21

@weisp: 建议排查一下代码是否存在内存泄漏问题,如果真的想手动回收,那就重启进程

dudu

|

园豆:37655

(高人七级)

|

2018-08-26 17:06

@dudu: GC.Collect(); // 强制进行垃圾回收

我定时调用这个,没有效果

weisp

|

园豆:3

(初学一级)

|

2018-08-26 17:39

@weisp: 问题不在没有回收,是回收不了,比如在静态类中的字段中引用了非静态类的实例,那个实例就永远不会被回收

dudu

|

园豆:37655

(高人七级)

|

2018-08-26 17:44

@dudu: 我为了方便在视图里方便调用,写了几个这些的静态方法,只有几个这样的方法,但有大量调用它们,ViewModel model 这个里面包含了一些注入的上下文

weisp

|

园豆:3

(初学一级)

|

2018-08-26 18:17

@weisp: 日志中有没有EF Core的告警

dudu

|

园豆:37655

(高人七级)

|

2018-08-26 19:11

@dudu: 没有

weisp

|

园豆:3

(初学一级)

|

2018-08-26 21:49

@dudu:

3dd66a2a5d98f639b252b9521c292695.png

f6744643df389d9f2bca8641500a1986.png

这是.net 2.0 运行中的线程状态

weisp

|

园豆:3

(初学一级)

|

2018-09-08 10:14

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值