日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > htmlcss > 關于wcf 的連接超時問題

關于wcf 的連接超時問題

來源:程序員人生   發布時間:2015-02-16 19:52:05 閱讀次數:5114次

今天網上的系統突然報錯,經過排查是調用wcf報錯了,報錯信息以下:

System.TimeoutException: The request channel timed out while waiting for a reply after 00:00:00. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout. ---> System.TimeoutException: The request operation did not complete within the allotted timeout of 00:01:00. The time allotted to this operation may have been a portion of a longer timeout.
   at System.ServiceModel.Channels.ReliableRequestSessionChannel.SyncRequest.WaitForReply(TimeSpan timeout)
   at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   --- End of inner exception stack trace ---

網上找了半天資料,這篇帖子是很有價值的

I also had this timeout problem.  The client requests to my WCF service would work 3 to 6 times, then it would fail with a timeout.  I was passing tiny messages back and forth, so I knew "I cannot accomplish such big error with such tiny messages" ;-) 

The problem was I was forgetting to call .Close() on the WCF client object!  Once I added the appropriate ".Close()", the error disappeared. 

So once you're done calling the WCF service, make sure to call Close(), probably in your Finally block.


經過排查確切是相干的部門調了這個服務,沒有加.Close().致使的.

在這個部門沒有修改代碼之前,服務器的配置如果需要修改,可以增加service的配置連接數

<serviceBehaviors>

<behavior name="ServiceBehavior">

<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->

<serviceMetadata httpGetEnabled="true"/>

<dataContractSerializer maxItemsInObjectGraph="10000000"/>

<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->

<serviceDebug includeExceptionDetailInFaults="true"/>

<serviceThrottling maxConcurrentCalls="200" maxConcurrentSessions="100" maxConcurrentInstances="100" />

</behavior>

</serviceBehaviors>


如果wcf是宿主在iis上的,可以增加iis的全局配置

http://www.cnblogs.com/z2002m/archive/2012/10/26/1918342.html

這篇很有價值了

IIS的MaxConnection的驗證

最近公司有位仁兄寫了1個監控IIS的軟件,里面提到1個連接數, 此連接數主要是搜集WMI信息, 

 

把代碼寫1下:

 

// 取到IIS的各個站點    

System.Management.ManagementClass mc = new System.Management.ManagementClass("Win32_PerfFormattedData_W3SVC_WebService");

 

// 每一個站點 

  foreach (System.Management.ManagementObject obj in mc.GetInstances()) 

{

// 這里就是每一個站點當前的連接數  

 Convert.ToInt64(obj.Properties["CurrentConnections"].Value);    // 

 

乍1看, 此 CurrentConnections是做甚么用的呢? 由于我1直想了解1個IIS站點默許在同1時刻究竟能接受多少連接要求,  上網查了查,查到了maxconnection。 

 

首先看看微軟是怎樣解釋的:

 

The maxconnection parameter determines how many connections can be made to a specific IP address.

這個 maxconnection參數用來肯定: 對每一個IP能容納多少個連接數(翻譯的其實不1定準)。   

  <connectionManagement>  

<add address="*" maxconnection="2"> // 這里就說明是2個

</connectionManagement>


這個 maxconnection會不會是并發連接數呢?   

 

我們來看看 http://www.microsofttranslator.com/BV.aspx?ref=CSSKB&from=en&to=zh-chs&a=http://support.microsoft.com/kb/821268/en-us?fr=1 

 

里面有1段寫的很明白,  

 

  • maxWorkerThreads 參數和 maxIoThreads 參數的值設置為 100
  • maxconnection 參數的值設置 12 * N (其中,N 是您的 cpu 的數量)。
  • 設置要 minFreeThreads 參數的值 88 * N 和 minLocalRequestFreeThreads 參數,76 * N
  • minWorkerThreads 的值設置為 50請記住 minWorkerThreads 不是默許的配置文件中。您必須添加它。
這些建議的1些觸及1個簡單的公式,觸及在服務器上的 cpu 數量。N 表示公式中的 cpu 數量的變量。這些的設置如果您有超線程啟用,您必須使用邏輯 cpu 數而不是物理 cpu 數。例如如果啟用超線程與4個處理器的服務器然后 N 公式中的值將是 8,而不是 4

請注意在使用此配置時您可以履行的每一個 CPU 12 ASP.NET 要求最多在同1時間由于 100⑻8 = 12因此,最少 88 * N 工作線程和 88 * N 完成端口線程都可用的其它用處 (例如 Web 服務回調)。

 

基本上就明白了。  maxconnection = 12*CPU數量。   我們公司的服務器是使用雙核的, 也就是說,在默許的情況下,

 

我們公司服務器上的IIS站點的默許最大連接數是24,  

 

接下來驗證1下, 測試的目的是為了證明: 當超過24個訪問連接候,IIS的站點還能不能接受其他的連接,   

 

實現準備:

1 寫1個WEBService,里面包括A和B方法,其中A方法里面就1句Thread.Sleep(10分鐘), 而B方法則直接Return "OK";  

2  VS2008負載測試(摹擬24個用戶同時訪問1臺服務器上的webServiceA方法,由于A方法是會讓線程休眠10分鐘)   

3  同時在服務器上搜集WMI信息來觀測WEBService當前的連接數, 使用: obj.Properties["CurrentConnections"].Value (具體搜集方法看本文開頭)

 

 

    這是負載測試, 

 

  這是負載測試調用的測試方法。

 

OK, 準備就緒, 開吃。。哦,不對, 開始測試,這里我就不貼出來當時測試的圖,  我把我測試的結果告之1下, 

 

當負載測試開始,  Webservicer  的 obj.Properties["CurrentConnections"].Value 值,1直在增加, 當增加到24時,也就是我們摹擬的24個用戶,

 

我們在本機再摹擬編寫1段訪問WebServiceB方法的代碼,注意B方法是不會使線程休眠的,直接Return "ok" . 結果1直等到超時,也沒有OK顯示, 

 

但此時 obj.Properties["CurrentConnections"].Value的值為25,

 

如果我們把負載并發數的設為23呢,再啟動負載測試, 當連接數到達23時, 再調用B方法,結果發現,大約在3秒鐘,調用B方法成功了,顯示“OK”,

 

 

順便提1句:在ASP.NET 2.0中,引入了autoConfig屬性:

1<processModel autoConfig="true"/>

當值為true時,autoConfig在運行時修改配置以下: 

 

  • 設置maxWorkerThreaders和maxIoThreads為100
  • 設置maxconnection 為12*CPU數量
  • 設置minFreeThreads為88*CPU數量
  • 設置minWorkerThreads為50

 

 

 


 

 

如果大家說, 我有1臺猛機, 配置牛B, 這些默許的設置不夠,我需要自已動用配置, OK, 可以直接在machine.config里修改, 

 

下面是示例代碼, 

 <system.net>
   <connectionManagement>
      <add address = "*" maxconnection = "24" />
    </connectionManagement>
 </system.net>
  <system.web>
    <httpRuntime minFreeThreads="176"  minLocalRequestFreeThreads="152"/>
    <processModel autoConfig="false" maxWorkerThreads="100" maxIoThreads="100"/>

 

有些人會問: 這個東東1定要在 machine.config里修改嗎? 能不能在web.config里面呢,目前我在Webserive程序里面的Web.config

修改了   <add address = "*" maxconnection = "30" />, 但使用負載測試時,發現還是不行,只能到達24, 這就說明30并未起作用。 

有知道的說明1下,為何不行? 依照微軟的說明,應當在web.config里面是可以起作用的,

 

需要注意的是: 如果增加了maxconnection 數量, maxWorkerThreads的數量也需要增加相當的數量, 比如在雙核的CPU上, 修改maxconnection = 25,

 

則 maxWorkerThreads也需要修改成101, 由于 maxconnection = maxWorkerThreads --minFreeThreads  

 

 


 

 

還有1個疑問: 如果IIS崩潰了, 這里正好有1個HTTP要求過來,那末IIS會怎樣處理?  答案中最好有微軟的官方說明。  

 

 


 

 

結論: IIS的站點默許的并發連接數是12*CPU,也就是說默許設置下IIS在同1時刻能處理的最大要求數是12*CPU數量 。

 

歡迎猛烈拍磚,有甚么好建議你老就用力的提吧。謝謝你了。


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲精品高潮呻吟久久av | 成人一区二区三区 | 欧美乱大交做爰xxxⅹ性3 | 久9色| av免费网| 成人毛片网 | 国产精品99久久久久 | 男女激情啪啪网站 | 国产成人综合自拍 | 欧美1区2区3区 | 日韩在线免费观看视频 | 国产综合精品一区二区三区 | 国产精品美女久久久久久久网站 | 国产成人精品a视频一区www | 黄色在线观看视频网站 | 99精品在线观看 | 欧美成人综合在线 | 夫妻av | 精品一区二区三区不卡 | 亚洲精品综合在线观看 | 欧美一区二区不卡视频 | 亚州中文| 精品免费国产一区二区三区四区 | 日韩一区二区三区av | 久久久亚洲综合 | 夜夜视频 | 欧美二区在线观看 | 免费欧美日韩 | 日韩免费不卡视频 | 91精品国产91久久综合 | 日韩一区在线视频 | 在线看无码的免费网站 | 日韩一区在线播放 | 91麻豆精品国产 | 一级欧美 | 玖玖精品 | 中文字幕免费观看 | 亚洲午夜精品在线 | 欧美精品一区二区三区四区五区 | 偷拍自拍在线观看 | 日韩精品一区二区三区在线播放 |