我有应用服务器,我用csharp写的。服务器正在与使用Flex4(FlashBuilder4.5)构建的Flash客户端进行通信。
服务器和客户端之间的通信使用RTMP完成。
对于服务器端的RTMP功能,我使用了FluorineFX (托管在IIS7中)。
所有连接都是使用远程过程调用完成的,其中Flash客户端在服务器中执行远程过程,并在RPC响应回调函数中获得结果。
服务器还可以使用RPC向客户端发送消息。
我的问题是,服务器在最后一个客户端连接后6分钟将所有客户端连接起来,而我不知道它为什么要这样做。
services-config.xml如下所示:
<services-config>
<channels>
<channel-definition id="my-rtmp" class="mx.messaging.channels.RTMPChannel">
<endpoint uri="rtmp://{server.name}:1935" class="flex.messaging.endpoints.RTMPEndpoint"/>
</channel-definition>
</channels>
</services-config>web.config包含以下配置:
<fluorinefx>
<settings>
<rtmpServer>
<threadpool minWorkerThreads="0" maxWorkerThreads="25" idleTimeout="60000"/>
<rtmpConnection pingInterval="0" maxInactivity="60000" maxHandshakeTimeout="0"/>
<rtmptConnection pingInterval="5000" maxInactivity="60000" maxHandshakeTimeout="5000"/>
<rtmpTransport receiveBufferSize="4096" sendBufferSize="4096" tcpNoDelay="true"/>
</rtmpServer>
</settings>
任何解决超时问题的帮助都将不胜感激,
柯比
发布于 2011-07-16 14:23:57
问题解决了。
这是由于IIS7应用程序池配置造成的:在其中一个应用服务器上,应用程序池空闲超时设置为6分钟。因此,6分钟后,无需向应用程序提出任何http请求,应用程序池将卸载所有程序集,包括Fluorine。
当网关的程序集卸载时,它将停止终止所有连接的网关。
更改应用程序池空闲超时的方法如下:
IIS6中的:转到应用程序池部分,右键单击托管有问题的ASP.NET应用程序的池上的属性。转到Performance,并取消选中“空闲后关闭工作进程:”
IIS 7中的:,转到“连接”窗格并找到“应用程序池”,并为承载应用程序的池选择“高级设置”。找到“空闲超时”属性并将其设置为"0“(这将禁用超时)。
柯比
https://stackoverflow.com/questions/6678917
复制相似问题