你的服務(wù)器IIS最大并發(fā)數(shù)有多少?
Dual 1.8雙核,2G內(nèi)存,14G虛擬內(nèi)存。
為了探尋IIS的最大并發(fā)數(shù),先要做幾個(gè)假設(shè)。
1、假設(shè)最大并發(fā)數(shù)就是當(dāng)前的連接數(shù)。意思是當(dāng)前能承受最大的連接,那么就表明最大的并發(fā)。
2、假設(shè)IIS應(yīng)用程序池處于默認(rèn)狀態(tài),更改設(shè)置將會(huì)對(duì)最大連接數(shù)產(chǎn)生影響。
做完假設(shè),現(xiàn)在做限制,設(shè)置站點(diǎn)保持HTTP連接,超時(shí)設(shè)置成0,就是不會(huì)超時(shí)。在站點(diǎn)請(qǐng)求的default.aspx頁面設(shè)置線程Thread.Sleep(int.MaxValue),接下來開發(fā)一個(gè)用來保持連接的小程序。
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("錯(cuò)誤消息:{0}", client.Messages));
} else {
rightCount++;
//Console.WriteLine(client.Messages);
}
}
}
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();
}
}
}
程序設(shè)置為只能啟動(dòng)1800個(gè)線程,這是由于.Net單進(jìn)程最大線程數(shù)好像是2000個(gè)。因此,要測(cè)試最大并發(fā)數(shù),要需要同時(shí)開幾個(gè)測(cè)試進(jìn)程。把系統(tǒng)虛擬內(nèi)存調(diào)到最大值,線程過多會(huì)急劇占用內(nèi)存?,F(xiàn)在開始測(cè)試。
打開web站點(diǎn)的性能計(jì)數(shù)器,把顯示比例調(diào)成1萬。
發(fā)現(xiàn)到5000個(gè)連接時(shí),IIS服務(wù)器崩潰(503錯(cuò)誤),去洗了個(gè)澡,發(fā)現(xiàn)IIS服務(wù)器無法自己修復(fù)錯(cuò)誤。又測(cè)試了幾次,發(fā)現(xiàn)最大并發(fā)值是8200個(gè),但是一般到5000左右就會(huì)崩潰,有時(shí)候甚至只有1000個(gè)。
按8200個(gè)計(jì)算,一個(gè)用戶開一個(gè)瀏覽器瀏覽網(wǎng)頁,可能會(huì)占用2~3個(gè)連接,按兩個(gè)計(jì)算,那么IIS默認(rèn)情況下,最大并發(fā)數(shù)是4000個(gè)左右。
打開應(yīng)用程序池配置,把最大工作進(jìn)程數(shù)調(diào)高(默認(rèn)為1),能有效提高最大連接數(shù)。我記得以前看過一篇文章,講的是調(diào)到5左右比較合適。
相關(guān)文章
win2003服務(wù)器/虛擬主機(jī)不支持Flv和ANI格式文件的解決方案
關(guān)于2003服務(wù)器/虛擬主機(jī)不支持Flv和ANI格式文件的解決方案解決2003不支持FLV的方法2011-05-05iis中ASP運(yùn)行環(huán)境配置圖解 IIS的安裝和基本設(shè)置
現(xiàn)在服務(wù)器上的asp運(yùn)行環(huán)境基本上都是用win2003或win2008,當(dāng)然也有winxp但iis版本是5.1的,大家可以根據(jù)需要選擇2012-04-04阿里云主機(jī)Windows 2008服務(wù)器硬盤分區(qū)和格式化圖文教程
這篇文章主要介紹了阿里云主機(jī)Windows 2008服務(wù)器硬盤分區(qū)和格式化圖文教程,本文對(duì)每一個(gè)步驟都配有圖文解說,一看就會(huì)呀,需要的朋友可以參考下2014-09-09Windows server 2008 R2配置多個(gè)遠(yuǎn)程連接的教程
這篇文章主要為大家詳細(xì)介紹了Windows server 2008 R2配置多個(gè)遠(yuǎn)程連接的教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07在IIS7中應(yīng)用Application Request Routing配置反向代理的圖文教程
在IIS7之前,在windows上要實(shí)現(xiàn)該功能卻不是一件容易的事情,但是在IIS7上,通過Application Request Routing模塊,我們可以輕松實(shí)現(xiàn)反向代理2013-07-07Windows?Server?2019?Web服務(wù)IIS配置與管理理論篇(術(shù)語解釋、工作原理與常見的WEB服務(wù)器)
介紹了部署?Windows?Web?服務(wù)器?IIS?之前所需要了解的一些關(guān)于WEB的基本術(shù)語概念,包括Web服務(wù)器定義,HTML,HTTP協(xié)議,HTTPS協(xié)議及其工作原理,同時(shí)也介紹了市面上常用的?WEB?服務(wù)器,并給出簡單的對(duì)比2023-05-05解決IIS不識(shí)別PUT和DELETE請(qǐng)求
這篇文章介紹了解決IIS不識(shí)別PUT和DELETE請(qǐng)求的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03Windows 2016 IIS10.0+PHP+MySQL環(huán)境搭建
Windows Server 2016是微軟于2016年10月13日正式的發(fā)布最新服務(wù)器操作系統(tǒng),我們今天來詳細(xì)看看在Windows Server 2016中如何搭建php+mysql的環(huán)境2016-12-12