Windows性能查看器:系统的性能信息(I/O,IIS最大连接数,Sql) ,以及解决 asp.net IIS 一二百多用户并发...
在測(cè)試過程中,我們經(jīng)常需要知道“系統(tǒng)的資源利用情況”來(lái)監(jiān)測(cè)我們的測(cè)試執(zhí)行情況,來(lái)查看測(cè)試環(huán)境是否有效,測(cè)試結(jié)果是否可信,或者是在無(wú)人值守時(shí)保存結(jié)果,等我們值班時(shí)再來(lái)分析。
1、在Windows環(huán)境下,“開始\運(yùn)行”中輸入“perfmon”,調(diào)出性能管理窗口;
2、在控制臺(tái)節(jié)點(diǎn)中選擇“性能日志和警報(bào)\計(jì)數(shù)器日志”;
3、在右側(cè)的空白窗口中右擊選擇“新建日志設(shè)置”,在彈出的窗口中輸入新建日志的名稱,如PerfTest,確定; 如圖:
????? <IIS站點(diǎn),則選擇Web Servie 項(xiàng) , 最后選擇左下角具體的站點(diǎn)項(xiàng)目>
//=========================================================================================
一個(gè)ASP.NET項(xiàng)目在運(yùn)營(yíng)中,當(dāng)接口并發(fā)量達(dá)到200左右時(shí),IIS出現(xiàn)了明顯的請(qǐng)求排隊(duì)現(xiàn)象,發(fā)送的請(qǐng)求都進(jìn)入等待,無(wú)法及時(shí)響應(yīng),Cpu接近100% 。花了很多時(shí)間精力解決這個(gè)問題,其中百度找了一解決方案,供大家參考。
注意到只有對(duì)于.aspx或.ashx的請(qǐng)求才會(huì)延遲,而.htm或.jpg文件都是即時(shí)響應(yīng)的,我選擇了性能監(jiān)視器中的ASP.NET 4.0中的2個(gè)主要計(jì)數(shù)器:Requests Current(當(dāng)前請(qǐng)求數(shù)), Requests Queued(被排隊(duì)的請(qǐng)求數(shù)),如下圖:(在左上角的列表中選擇asp.net 4.0,? 雙擊選擇左下角的二個(gè)目標(biāo),完成添加)
進(jìn)行觀察。通過觀察發(fā)現(xiàn),當(dāng)前請(qǐng)求數(shù)達(dá)到200左右時(shí),被排隊(duì)的請(qǐng)求數(shù)就從0開始上升,一直到50左右,如果請(qǐng)求數(shù)繼續(xù)上升,則被排隊(duì)數(shù)也隨之上升。當(dāng)被排隊(duì)的請(qǐng)求數(shù)>0時(shí),就意味著這個(gè)時(shí)候去訪問任何.aspx頁(yè)面,頁(yè)面都會(huì)處于長(zhǎng)時(shí)間等待中,沒有任何響應(yīng),直到IIS處理完了其他請(qǐng)求,才會(huì)開始處理隊(duì)列中的請(qǐng)求。也就是說(shuō),當(dāng)排隊(duì)數(shù)長(zhǎng)期>0時(shí),系統(tǒng)基本處于不可用的狀態(tài)。就是說(shuō)200個(gè)并發(fā)請(qǐng)求下,幾乎所有的請(qǐng)求都被排隊(duì)了,如下圖
針對(duì)以上問題,查閱了相關(guān)資料,是否出現(xiàn)排隊(duì)是和應(yīng)用程序池的可用線程有關(guān),通過2個(gè)方法可以查看系統(tǒng)總線程數(shù)和當(dāng)前可用線程數(shù)。
ThreadPool.GetAvailableThreads( out availableWorker, out availableIO);
ThreadPool.GetMaxThreads(out maxWorker, out maxIO);
在隊(duì)列請(qǐng)求數(shù)達(dá)到120左右時(shí),通過此方法,得到maxWorker=1600,而availableWorker=1472
因?yàn)榉?wù)器是16核的,ASP.NET4.0默認(rèn)每核可以使用100個(gè)線程,所以maxWorker是1600,1600-120=1480,大致相等。
就是說(shuō)當(dāng)前有120個(gè)線程被用來(lái)處理請(qǐng)求,還有1400多個(gè)處于空閑。關(guān)鍵問題就是為什么這些空閑線程沒有被及時(shí)啟用?
ASP.NET提供的線程配置參數(shù)中,有一個(gè)參數(shù)是非常重要,但是可能被大家忽略的,就是minWorkerThreads。
意指最小工作線程,根據(jù)我們以上的測(cè)試結(jié)果,IIS托管線程啟動(dòng)非常慢,微軟也認(rèn)識(shí)到了這個(gè)問題,所以提供此參數(shù)用于設(shè)置正常情況下的最小工作線程數(shù)。比如我們系統(tǒng)白天的并發(fā)在200-300之間,則可以設(shè)置最小線程為300,這樣系統(tǒng)響應(yīng)速度可以大幅提高。
據(jù)此,我對(duì)配置文件(machine.config)進(jìn)行了如下修改。注意都是針對(duì)單個(gè)CPU的,系統(tǒng)會(huì)自動(dòng)乘以邏輯CPU的數(shù)量。
<system.web>
<processModel autoConfig="false" maxWorkerThreads="200" minWorkerThreads="50" />
本文轉(zhuǎn)自:http://www.cnblogs.com/Fooo/p/3341775.html
其他相關(guān)參考網(wǎng)站:http://www.cnblogs.com/tianguook/p/5204757.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Windows性能查看器:系统的性能信息(I/O,IIS最大连接数,Sql) ,以及解决 asp.net IIS 一二百多用户并发...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 松鼠猴可以当宠物养(宠物松鼠价格)
- 下一篇: 桐城论坛(tc论坛)