1
NXzCH8fP20468ML5 238 天前
我模糊印象中,StackExchange.Redis 早期版本有内存泄漏问题,升级一下试试?
|
2
NXzCH8fP20468ML5 238 天前
如果在代码中定期调用 system.gc.collect 是否有内存下降,如果是的话,说明可能是高代的对象内存泄漏了。
|
3
mingl0280 238 天前 via Android
dump 下来以后直接塞进 vs 看内存啊……
|
4
xiangyuecn 238 天前
几分钟配置个定时重启,解决 99.99%疑难杂症😂
|
5
poorcai 238 天前 via Android
如果你会调试,使用 windbg 试一下
|
6
idragonet 238 天前 1
@xiangyuecn #4 这个是昏招!
|
7
lujiaxing 238 天前
@xiangyuecn 啊?
|
8
qW7bo2FbzbC0 238 天前
升级下 dotnet 版本 和 stack redis 版本
|
9
ashuai 238 天前
1. 需要优化 redis 大 key
2. StackExchange.Redis bug 有点多,升级版本或换掉 |
10
hez2010 238 天前
运行 dotnet-gcdump 会强制进行一次完整的 gen 2 GC ,建议你考虑一下升级 .NET 和 StackExchange.Redis 的版本。
.NET 5 已经终止支持了,建议直接升级到 .NET 8 观察,.NET 因为向后兼容做得很好升级就是改个版本号的事情。 另外从不 Unsubscribe 也可能是原因之一。 |
11
drymonfidelia OP @xiangyuecn 如果不是重启会导致客户端全断开连接一分钟 还真的会用这种方案 公司快倒闭了裁了一堆人 业务能用就行
|
12
NXzCH8fP20468ML5 238 天前 via Android
@drymonfidelia 模糊印象中,之前博客园看过这个案例,和你说的 StackExchange.Redis.RawResult 多很像。
并不是 StackExchange.Redis 的 bug ,而是不正确的方式接收消息导致的内存泄露问题。 不过后续那个作者给 StackExchange.Redis 提了 issue ,新版本就做了兜底机制,所以我让你升级一下版本试试。 |
13
drymonfidelia OP |
14
ggabc 238 天前
偷个懒,加个定时线程自动回收
|
15
drymonfidelia OP @ggabc 我就是这么做的,每 3 分钟 GC.Collect()一次,暂时是没出问题
|
16
NXzCH8fP20468ML5 238 天前 via Android
@drymonfidelia 为啥不敢升级最新? aspnetcore 就算了,StackExchange.Redis 为啥不升
|
17
NXzCH8fP20468ML5 238 天前 via Android
@drymonfidelia 那看起来就是高代现象的问题了。
|
18
NXzCH8fP20468ML5 238 天前 via Android
@drymonfidelia 越来越像博客园那篇文章了,好像也是高代对象的问题,你可以搜一下文章试试。
|
19
drymonfidelia OP @xxfye 之前遇到过升级 ClosedXML 还是别的什么包(想不起来)导致一个它依赖的包被升级了,然后这个包刚好砍了其它包依赖的几个对象,没有向前兼容,之后折腾降级又弄了很久。看 StackExchange.Redis 的 issue 有一些反馈升级后出现问题的,就不敢升级了
|
20
lrh3321 238 天前
粗暴点,前面再加一层负责和客户端保持连接。读写 redis 放在一个定时重启的微服务里去做。
|
21
baibaibaibai 95 天前
我这边之前一项目 GC dump 抓包分析出来是 redis 大 key 问题
|