<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    http://www.tkk7.com/ebecket 返還網(wǎng)
    隨筆-140  評論-11  文章-131  trackbacks-0

    探尋IIS最大并發(fā)數(shù)

    測試系統(tǒng)Window 2003 Server ,IIS 6.0 ,ASP.Net 3.5 sp1
    Dual 1.8雙核,2G內(nèi)存,14G虛擬內(nèi)存。

    為了探尋IIS的最大并發(fā)數(shù),先要做幾個假設。

    1、假設最大并發(fā)數(shù)就是當前的連接數(shù)。意思是當前能承受最大的連接,那么就表明最大的并發(fā)。
    2、假設IIS應用程序池處于默認狀態(tài),更改設置將會對最大連接數(shù)產(chǎn)生影響。

    做完假設,現(xiàn)在做限制,設置站點保持HTTP連接,超時設置成0,就是不會超時。在站點請求的default.aspx頁面設置線程Thread.Sleep(int.MaxValue),接下來開發(fā)一個用來保持連接的小程序。


        class Program {
            
    private volatile static int errorCount = 0;
            
    private volatile static int rightCount = 0;

            
    static void Main(string[] args) {
                ServicePointManager.DefaultConnectionLimit 
    = 10000;
                
    int count = 0;
                
    int all = 0;
                
    while (true) {
                    all
    ++; count++;
                    CreateThread();
                    Thread.Sleep(
    10);
                    
    if (count >= 200) {
                        Console.WriteLine(
    string.Format("sucess:{0};error:{1}", all - errorCount, errorCount));
                        count 
    = 0;
                    }
                    
    if (all > 1800)
                        
    break;
                }
                Console.ReadKey();
            }

            
    static void CreateThread() {
                Thread thread 
    = new Thread(ActiveRequest);
                thread.IsBackground 
    = true;
                thread.Start();
            }

            
    static void ActiveRequest() {
                RequestClient client 
    = new RequestClient("http://192.168.18.2/default.aspx?d=" + Guid.NewGuid());
                client.RequestProcess();
                
    if (client.IsError) {
                    errorCount
    ++;
                    Console.WriteLine(
    string.Format("錯誤消息:{0}", client.Messages));
                } 
    else {
                    rightCount
    ++;
                    
    //Console.WriteLine(client.Messages);
                }
            }
        }

    /**
     * author : yurow
     *      
    http://birdshover.cnblogs.com
     * description:
     *      
     * history : created by yurow 2009-8-16 0:29:05 
     
    */

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.IO;

    namespace MaxLinked {
        
    /// <summary>
        
    /// 
        
    /// </summary>
        public class RequestClient {
            HttpWebRequest request;
            WebResponse response;

            
    public RequestClient(string url) {
                request 
    = (HttpWebRequest)HttpWebRequest.Create(url);
                request.Timeout 
    = int.MaxValue;
                request.KeepAlive 
    = true;
                ErrorCode 
    = -1;
            }

            
    public void AddHeader(string name, string value) {
                request.Headers.Add(name, value);
            }

            
    private bool isError = false;
            
    private StringBuilder buffer = new StringBuilder();

            
    public int ErrorCode { getset; }

            
    public bool IsError {
                
    get { return isError; }
            }

            
    public string Messages {
                
    get { return buffer.ToString(); }
            }

            
    public void RequestProcess() {
                
    try {
                    response 
    = request.GetResponse();
                } 
    catch (WebException ex) {
                    ErrorCode 
    = (int)ex.Status;
                    buffer.Append(ex.Message);
                    isError 
    = true;
                } 
                
    if (response != null) {
                    Stream stream 
    = null;
                    StreamReader reader 
    = null;
                    
    try {
                        
    //stream = response.GetResponseStream();
                        
    //reader = new StreamReader(stream, Encoding.UTF8);
                        
    //buffer.Append(reader.ReadToEnd());
                    } catch (Exception ex) {
                        buffer.Append(ex.Message);
                        isError 
    = true;
                    } 
    finally {
                        
    //if (reader != null)
                        
    //    reader.Close();
                        
    //if (stream != null)
                        
    //    stream.Close();
                    }
                } 
    else {
                    isError 
    = true;
                    buffer.Append(
    "建立連接失??!");
                }
            }

            
    public void Close() {
                
    if (response != null)
                    response.Close();
                request.Abort();
            }
        }
    }

     

    程序設置為只能啟動1800個線程,這是由于.Net單進程最大線程數(shù)好像是2000個。因此,要測試最大并發(fā)數(shù),要需要同時開幾個測試進程。把系統(tǒng)虛擬內(nèi)存調(diào)到最大值,線程過多會急劇占用內(nèi)存?,F(xiàn)在開始測試。

    打開web站點的性能計數(shù)器,把顯示比例調(diào)成1萬。

    發(fā)現(xiàn)到5000個連接時,IIS服務器崩潰(503錯誤),去洗了個澡,發(fā)現(xiàn)IIS服務器無法自己修復錯誤。又測試了幾次,發(fā)現(xiàn)最大并發(fā)值是8200個,但是一般到5000左右就會崩潰,有時候甚至只有1000個。

    按8200個計算,一個用戶開一個瀏覽器瀏覽網(wǎng)頁,可能會占用2~3個連接(參考《IIS連接數(shù)實驗——Web開發(fā)必讀 》),按兩個計算,那么IIS默認情況下,最大并發(fā)數(shù)是4000個左右。

    打開應用程序池配置,把最大工作進程數(shù)調(diào)高(默認為1),能有效提高最大連接數(shù)。我記得以前看過一篇文章,講的是調(diào)到5左右比較合適。

    posted on 2010-01-20 01:27 becket_zheng 閱讀(304) 評論(0)  編輯  收藏 所屬分類: 網(wǎng)頁web前端技術(shù)C#網(wǎng)絡/服務器
    主站蜘蛛池模板: 一级做a爰黑人又硬又粗免费看51社区国产精品视| 伊人免费在线观看| 亚洲а∨天堂久久精品| 两个人看的www免费视频| 亚洲精彩视频在线观看| 成年女人永久免费观看片| 精品无码国产污污污免费网站国产 | 亚欧洲精品在线视频免费观看| 亚洲处破女AV日韩精品| 成年女性特黄午夜视频免费看| 免费一区二区无码视频在线播放| 亚洲AV成人无码久久精品老人| 久久精品国产精品亚洲艾| 日本一区二区三区免费高清 | 一二三四影视在线看片免费 | 日韩免费视频播播| 在线毛片片免费观看| 亚洲色成人网站WWW永久四虎| 久久精品国产精品亚洲| 中文字幕无码不卡免费视频| 亚洲五月午夜免费在线视频| 亚洲国产精品免费观看 | 亚洲av成人综合网| 国产成人精品日本亚洲专区| 巨胸喷奶水视频www网免费| 青青草原1769久久免费播放| 激情小说亚洲图片| 亚洲电影在线免费观看| 亚洲综合网站色欲色欲| 女人18毛片免费观看| 欧洲精品99毛片免费高清观看| 四虎影视永久在线精品免费| 亚洲一级毛片在线观| 亚洲av综合av一区| 亚洲人午夜射精精品日韩| 成人免费视频88| 亚洲视频免费播放| 免费网站看av片| 国产线视频精品免费观看视频| 朝桐光亚洲专区在线中文字幕| 亚洲成a人片在线观|