首页 新闻 搜索 专区 学院

SignalR推送数据大时内存暴涨?

0
悬赏园豆:20 [待解决问题]

以前用SignalR推送都是推送小数据,今天用多一点的数据来推送,数据大小差不多50k,发现当1s推送1W次的情况下会内存暴涨?请问博友,SignalR推送时是否会大量占用内存,如果有,一般什么时候会释放?

最爱晴天的主页 最爱晴天 | 初学一级 | 园豆:187
提问于:2015-12-13 14:43
< >
分享
所有回答(2)
0

属于废话的问题。你推过来的数据当然是接收在内存里。什么时候释放当然要看你接收的数据时候释放或者能让GC回收

吴瑞祥 | 园豆:29369 (高人七级) | 2015-12-13 16:30

你好,我试过让GC强制性回收,发现内存还是一直涨。请问是否有遇到过

支持(0) 反对(0) 最爱晴天 | 园豆:187 (初学一级) | 2015-12-13 16:32

@最爱晴天: 

你问的问题不存在。极端情况的话你的服务会接收到1W个49K的包,所谓的内存涨是必然的。而一个线程就要占多少内存。你需要关心的只是一个请求处理过程中内存的使用是合理的就行。

建议是不要去干预GC的运行。改回收怎么回收。不要再内存里放太多数据就行。

支持(0) 反对(0) 吴瑞祥 | 园豆:29369 (高人七级) | 2015-12-13 20:31
0

我也遇到了相同的情况,服务器IIS往客户端发送一些数据,发送多了的情况下,内存上升不释放,一直到溢出。好像不是客户端的事,因为显示内存都是IIS占的。send完数据,立刻设置为null了。但还是内存不释放。太奇怪了。难道传送中的数据一直在内存?还是IIS缓存起来了?前台已经收到了,为什么还占着内存呢?

Ruy2022 | 园豆:201 (菜鸟二级) | 2017-07-13 09:38

你也是signalR发送的么?

支持(0) 反对(0) 最爱晴天 | 园豆:187 (初学一级) | 2017-07-13 11:00

@最爱晴天: 是的。感觉特别奇怪,不明白内存为什么不释放。你有线索么?

支持(0) 反对(0) Ruy2022 | 园豆:201 (菜鸟二级) | 2017-07-13 11:18

@亮仔的给力人生: SignalR 有个消息缓存区,如果推送频繁且数据量大的话缓存区就会暴涨,可以通过GlobalHost.Configuration.DefaultMessageBufferSize调整下,之前看官网的时候发现的

支持(0) 反对(0) 最爱晴天 | 园豆:187 (初学一级) | 2017-07-13 11:22

@最爱晴天: 十分感谢,调整了这个参数果然有效果了。但是突然发现这个值调小了,偶热会有消息收不到,调大了我在vs里调试会经常内存溢出。这种丢消息的情况你遇到过吗?

支持(0) 反对(0) Ruy2022 | 园豆:201 (菜鸟二级) | 2017-07-13 12:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册