Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iis 集线器中的内存泄漏/消耗是否由大消息引起?_Iis_Rabbitmq_Signalr - Fatal编程技术网

Iis 集线器中的内存泄漏/消耗是否由大消息引起?

Iis 集线器中的内存泄漏/消耗是否由大消息引起?,iis,rabbitmq,signalr,Iis,Rabbitmq,Signalr,我目前正在尝试SignalR和RabbitMQ,以便循环/负载平衡json Web服务查询,并且我遇到了一个应用程序在处理大型(约300-2500 kb)消息时内存消耗的问题 我有一个IIS服务器托管一个web应用程序(名为“后端”),该应用程序需要查询另一个同样由IIS服务器托管的web应用程序(名为“定价”)。 为了保持与RabbitMQ服务器的连接,我开发了控制台应用程序,该应用程序使用信号器连接到后端和主控 因此,当后端需要查询Princing时,它会要求其控制台在队列中发布消息,而连接

我目前正在尝试SignalR和RabbitMQ,以便循环/负载平衡json Web服务查询,并且我遇到了一个应用程序在处理大型(约300-2500 kb)消息时内存消耗的问题

我有一个IIS服务器托管一个web应用程序(名为“后端”),该应用程序需要查询另一个同样由IIS服务器托管的web应用程序(名为“定价”)。 为了保持与RabbitMQ服务器的连接,我开发了控制台应用程序,该应用程序使用信号器连接到后端和主控

因此,当后端需要查询Princing时,它会要求其控制台在队列中发布消息,而连接到Pricing的控制台会接收消息并将其交给Pricing(使用Invoke方法)。当定价完成其工作时,它要求其控制台发布回复消息,连接到后端的控制台将其接收并发送给后端

总而言之:
[Backend]->[Console]->[RabbitMQ]因此,我使用的信号器版本(.NetFramework)似乎允许调整内存中每个连接的每个集线器的消息数。 我在Startup.cs中将其固定为任意50

GlobalHost.Configuration.DefaultMessageBufferSize = 50;
它的默认值是1000,这意味着(如果我理解清楚的话)IIS在内存中保留1000条消息的循环缓冲区。一些消息的权重为2.5Mo,这意味着每个连接使用的内存可能高达2500Mo

由于我的IIS只有一个连接(它的控制台),并且不需要跟踪消息(因为它作为webservice工作),所以1000条消息似乎太多了

在限制为50条消息的情况下,Windows任务管理器中应用程序使用的内存保持不变(大约500 MB)

我使用它的方式有什么缺陷吗


谢谢

请使用内存分析器实际检查内存使用情况。这可以很容易地判断出问题所在。谢谢你的回复。我发现我可以限制中心中保存的邮件数量,这似乎可以降低内存。
.NETFramework : 4.5
Microsoft.AspNet.SignalR : 2.4.1
GlobalHost.Configuration.DefaultMessageBufferSize = 50;