以前用SignalR推送都是推送小数据,今天用多一点的数据来推送,数据大小差不多50k,发现当1s推送1W次的情况下会内存暴涨?请问博友,SignalR推送时是否会大量占用内存,如果有,一般什么时候会释放?
属于废话的问题。你推过来的数据当然是接收在内存里。什么时候释放当然要看你接收的数据时候释放或者能让GC回收
你好,我试过让GC强制性回收,发现内存还是一直涨。请问是否有遇到过
@最爱晴天:
你问的问题不存在。极端情况的话你的服务会接收到1W个49K的包,所谓的内存涨是必然的。而一个线程就要占多少内存。你需要关心的只是一个请求处理过程中内存的使用是合理的就行。
建议是不要去干预GC的运行。改回收怎么回收。不要再内存里放太多数据就行。
我也遇到了相同的情况,服务器IIS往客户端发送一些数据,发送多了的情况下,内存上升不释放,一直到溢出。好像不是客户端的事,因为显示内存都是IIS占的。send完数据,立刻设置为null了。但还是内存不释放。太奇怪了。难道传送中的数据一直在内存?还是IIS缓存起来了?前台已经收到了,为什么还占着内存呢?
你也是signalR发送的么?
@最爱晴天: 是的。感觉特别奇怪,不明白内存为什么不释放。你有线索么?
@亮仔的给力人生: SignalR 有个消息缓存区,如果推送频繁且数据量大的话缓存区就会暴涨,可以通过GlobalHost.Configuration.DefaultMessageBufferSize调整下,之前看官网的时候发现的
@最爱晴天: 十分感谢,调整了这个参数果然有效果了。但是突然发现这个值调小了,偶热会有消息收不到,调大了我在vs里调试会经常内存溢出。这种丢消息的情况你遇到过吗?