我開發了一個asp.net web服務並部署在IIS 7.5和Windows 2008 R2 64位上。所有請求都來自Biztalk這個Web服務。如果Biztalk在時間發送幾個請求,該Web服務運行良好。但是,如果BizTalk在幾秒鐘內發送數千條記錄,我的Web服務將無法處理,並將Request TimeOuts
錯誤發送回BizTalk。如何在幾秒鐘內處理一堆請求的asp.net web服務?
我不理解如何處理這種情況。大師請給我想法。
我開發了一個asp.net web服務並部署在IIS 7.5和Windows 2008 R2 64位上。所有請求都來自Biztalk這個Web服務。如果Biztalk在時間發送幾個請求,該Web服務運行良好。但是,如果BizTalk在幾秒鐘內發送數千條記錄,我的Web服務將無法處理,並將Request TimeOuts
錯誤發送回BizTalk。如何在幾秒鐘內處理一堆請求的asp.net web服務?
我不理解如何處理這種情況。大師請給我想法。
有三個方面需要弄清楚。
第一個是如何提高你的web服務本身的吞吐量。對其進行配置並查看可以修剪的內容。當一個人會做多個數據庫調用嗎?它是否將內容寫入緩慢的硬盤(修復:用更快的機器更換驅動器)?本質上是試着弄清楚爲什麼你的服務只處理有限數量的同時調用。這可能涉及從基於XML的服務轉移到基於json或其他有限格式的服務。它可能涉及擺脫各種腳手架垃圾(如asmx,wcf等),以支持基於REST的簡單通用處理程序。無論如何,你將不得不介紹服務,以找出它的關鍵所在。
接下來看看您是否可以設置額外的機器來託管Web服務並建立負載平衡。這可能是最好的方法。
第三,(無論上述發現如何),您需要確定安全流量級別,並讓Biztalk節制它自己的連接。如果在做了所有可以提高吞吐量的事情之後,您會發現有200個同時發生的請求,然後將Biztalk調節爲僅發送200個同時發送請求。
還有machine.config中的配置設置,使您可以使用其他線程加速asp Web服務。有幾篇文章可以基於服務器上的CPU數量來確定最佳設置。如果您需要調節btssvc.config中的BizTalk,我相信。
添加線程通常不會加速Web服務。 – 2012-03-05 20:09:13
@JohnSaunders:有時,在ASP.Net應用程序池中添加其他Web應用程序可以提高吞吐量。這真的取決於什麼,確切地說,阻塞點是。 – NotMe 2012-03-05 20:14:55
@ChrisLively:正是我的觀點:先找出問題所在,然後解決問題。 – 2012-03-05 20:18:48
我想BizTalk應該有某種配置的限制來幫助你及時傳播請求。 – Sly 2012-03-05 17:52:52
這似乎有點含糊。您是否希望加速Web服務(並因此能夠快速處理多少請求),還是希望減慢/扼制BizTalk發送的請求數量(@Sly提到)? – jadarnel27 2012-03-05 17:59:28
我認爲正確的方法是減慢從BizTalk發送的請求數量 – Sly 2012-03-05 18:00:32