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

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 服務器 > Windows實戰:探尋IIS最大并發數

Windows實戰:探尋IIS最大并發數

來源:程序員人生   發布時間:2014-02-10 09:08:49 閱讀次數:3804次

  測試系統Window 2003 Server ,IIS 6.0 ,ASP.Net 3.5 sp1

  Dual 1.8雙核,2G內存,14G虛擬內存。

  為了探尋IIS的最大并發數,先要做幾個假設。

  1、假設最大并發數就是當前的連接數。意思是當前能承受最大的連接,那么就表明最大的并發。

  2、假設IIS應用程序池處于默認狀態,更改設置將會對最大連接數產生影響。

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

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 { get; set; }

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單進程最大線程數好像是2000個。因此,要測試最大并發數,要需要同時開幾個測試進程。把系統虛擬內存調到最大值,線程過多會急劇占用內存。現在開始測試。

  打開web站點的性能計數器,把顯示比例調成1萬。

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

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

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

  文章來自:http://birdshover.cnblogs.com

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 免费在线观看av片 | 国内精品一区二区 | 国产精品亚洲综合 | 91亚洲精品在线 | 91久久综合亚洲鲁鲁五月天 | 欧美视频区 | 国产在线精品一区二区在线播放 | 久久都是精品 | 亚洲一区在线观看视频 | 蜜臀麻豆 | 欧美日韩精品一区二区三区四区 | 亚洲激情在线视频 | 精品视频999 | 国产精品久久福利 | 成人免费一区二区三区视频网站 | 国产精品一区二区久久久 | 国产精品区视频 | 日韩精品大片 | 国产一区二区不卡 | 日韩精选| 国产99在线观看 | 国产精品久久久久久影视 | 九九久久国产 | 午夜精品影院 | 亚洲网站在线观看 | 日本一道本视频 | 日韩av不卡在线播放 | 成人瑟瑟 | 黄色毛片免费视频 | 亚洲乱码国产乱码精品精98午夜 | 亚洲视频一区二区 | 91高清免费看 | 国产在线精品91国自产拍免费 | 日本一区二区在线 | 国产一区二区三区精品在线观看 | 国产伦精品一区二区三区免费视频 | 日韩视频久久 | 91麻豆精品国产91久久久使用方法 | 精品国产一区二区三区久久久 | 国产三级精品三级在线观看国产 | 福利在线观看 |