對(duì)WCF數(shù)據(jù)量進(jìn)行詳細(xì)介紹
希望我對(duì)WCF數(shù)據(jù)量的一點(diǎn)經(jīng)驗(yàn)?zāi)芙o大家?guī)?lái)幫助,下面通過(guò)IIS服務(wù)器的真實(shí)處理,以及代碼和異常的使用問(wèn)題,進(jìn)行解釋說(shuō)明,下面就把編制的代碼一一列數(shù)下來(lái),歡迎大家學(xué)習(xí)研究。
昨天下午在作WCF數(shù)據(jù)量并發(fā)的測(cè)試,同時(shí)啟動(dòng)40個(gè)客戶端進(jìn)程,在碰到比較耗時(shí)的服務(wù)處理時(shí),IIS服務(wù)器返回403錯(cuò)誤。異常信息如下:]
- System.ServiceModel.Security.MessageSecurityException: System.Net.HttpWebRequest.GetResponse()
- System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
- Server stack trace:
- System.ServiceModel.Channels.HttpChannelUtilities.ValidateAuthentication(HttpWebRequest request, HttpWebResponse response,
WebException responseException, HttpChannelFactory factory)- System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request,
HttpWebResponse response, HttpChannelFactory factory, WebException responseException)- System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.
WaitForReply(TimeSpan timeout) System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)- System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
- System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
- System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
- System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
- System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
- Exception rethrown at [0]:
- System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
- System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
- terminal.ViolationService.IViolationService.QueryVioImg(String vioSeq)
- terminal.ViolationService.ViolationServiceClient.QueryVioImg(String vioSeq),terminal.Program.Main(String[] args)
通過(guò)各種方法監(jiān)控WCF數(shù)據(jù)量的錯(cuò)誤消息,可是這些出錯(cuò)的調(diào)用都沒(méi)有到達(dá)WCF,所有監(jiān)測(cè)WCF的地方和WCF的TraceLog都沒(méi)有任何的錯(cuò)誤。隨后又拿出***法寶wireshark,抓包也看不到任何錯(cuò)誤,就是客戶端請(qǐng)求了服務(wù)器一下,然后IIS就返回了403錯(cuò)誤,并報(bào)告上面的異常。#t#
于是把WCF的服務(wù)部署到了Win2003server的iis6下面。這樣程序正常運(yùn)行不會(huì)有任何錯(cuò)誤。于是查了一下IIS5.1 造成403錯(cuò)誤的原因。原來(lái)是IIS5.1的***連接數(shù)的問(wèn)題。于是總結(jié)了一下:
同時(shí)修改了幾個(gè)方面:
1.windowsXP SP3的TCP連接數(shù),改為512。(有專門的工具破解)
2.WCF數(shù)據(jù)量會(huì)話數(shù),調(diào)用數(shù)和實(shí)例數(shù)