软件设计流程是这样的,都发生在局域网
1.服务端 使用wcf,.读取局域网另一台服务机上的文件,对文件进行解析,生成新文件,打包新文件成压缩包,提供下载,流的形式。
2.客户端 使用silverlight,1.一个List<path> 取path 循环调用wcf下载压缩文件方法。
问题描述1. 文件数量比较多,500个,
当有6台机器同时下载时,大概是每台机器都下载到220个文件左右,全部停止,服务器cup也降下来。
220x6=1320
当有4台机器同时下载时,大概是每台机器都下载到350个文件左右,全部停止,服务器cup也降下来。
350x4=1400
当有2台机器同时下载时,可正常下载,服务器cup降下来。
结论是只能同时下载大概1300张左右的文件,超过时就会停止下载。
在停止下载后,在进行下载(1-2)台,可正常下载。
问:这种情况大概有哪些原因。 我觉得主要是服务器端的问题,1. IIS下载限制(数量,大小),2.连接问题,Silverlight端没有正确释放?(silverlight中wcf的调用是每次打开一个新实例,调用方法,关闭)
下载调用代码:
var psc = new ServiceClient();
try
{
(psc.Endpoint.Binding as BasicHttpBinding).MaxReceivedMessageSize = int.MaxValue;
(psc.Endpoint.Binding as BasicHttpBinding).MaxBufferSize = int.MaxValue;
psc.GetDicomFileBytesCompleted += psc_GetFileBytesCompleted;
psc.GetDicomFileBytesAsync(downLoadPath);
psc.CloseAsync();
}
config文件配置:
<binding name="BasicHttpBinding_IService" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
FileShare.Read问题
File.Open(,,,FileShare.Read)) msdn:允许随后打开文件读取。如果未指定此标志,则文件关闭前,任何打开该文件以进行读取的请求(由此进程或另一进程发出的请求)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。