如何确定IIS服务器的最大并发连接数?

2026-05-25 09:494阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计885个文字,预计阅读时间需要4分钟。

如何确定IIS服务器的最大并发连接数?

测试系统配置:Windows Server 2003,IIS 6.0,ASP.Net 3.5 sp1,双核CPU,2G内存,14G虚拟内存。为探究IIS的最大并发数,需进行几个假设设置。假设1:最大并发数即为当前的连接数。意图是了解当前系统能承受的最大并发连接数。

测试系统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),接下来开发一个用来保持连接的小程序。

Code
classProgram{
privatevolatilestaticinterrorCount=0;
privatevolatilestaticintrightCount=0;

staticvoidMain(string[]args){
ServicePointManager.DefaultConnectionLimit=10000;
intcount=0;
intall=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();
}

staticvoidCreateThread(){
Threadthread=newThread(ActiveRequest);
thread.IsBackground=true;
thread.Start();
}

staticvoidActiveRequest(){
RequestClientclient=newRequestClient("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
*birdshover.cnblogs.com
*description:
*
*history:createdbyyurow2009-8-160:29:05
*/

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Net;
usingSystem.IO;

namespaceMaxLinked{
///<summary>
///
///</summary>
publicclassRequestClient{
HttpWebRequestrequest;
WebResponseresponse;

publicRequestClient(stringurl){
request=(HttpWebRequest)HttpWebRequest.Create(url);
request.Timeout=int.MaxValue;
request.KeepAlive=true;
ErrorCode=-1;
}

publicvoidAddHeader(stringname,stringvalue){
request.Headers.Add(name,value);
}

privateboolisError=false;
privateStringBuilderbuffer=newStringBuilder();

publicintErrorCode{get;set;}

publicboolIsError{
get{returnisError;}
}

publicstringMessages{
get{returnbuffer.ToString();}
}

publicvoidRequestProcess(){
try{
response=request.GetResponse();
}catch(WebExceptionex){
ErrorCode=(int)ex.Status;
buffer.Append(ex.Message);
isError=true;
}
if(response!=null){
Streamstream=null;
StreamReaderreader=null;
try{
//stream=response.GetResponseStream();
//reader=newStreamReader(stream,Encoding.UTF8);
//buffer.Append(reader.ReadToEnd());
}catch(Exceptionex){
buffer.Append(ex.Message);
isError=true;
}finally{
//if(reader!=null)
//reader.Close();
//if(stream!=null)
//stream.Close();
}
}else{
isError=true;
buffer.Append("建立连接失败!");
}
}

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

程序设置为只能启动1800个线程,这是由于.Net单进程最大线程数好像是2000个。因此,要测试最大并发数,要需要同时开几个测试进程。把系统虚拟内存调到最大值,线程过多会急剧占用内存。现在开始测试。

如何确定IIS服务器的最大并发连接数?

打开web站点的性能计数器,把显示比例调成1万。

发现到5000个连接时,IIS服务器崩溃(503错误),去洗了个澡,发现IIS服务器无法自己修复错误。又测试了几次,发现最大并发值是8200个,但是一般到5000左右就会崩溃,有时候甚至只有1000个。

按8200个计算,一个用户开一个浏览器浏览网页,可能会占用2~3个连接(参考《IIS连接数实验——Web开发必读 》),按两个计算,那么IIS默认情况下,最大并发数是4000个左右。

打开应用程序池配置,把最大工作进程数调高(默认为1),能有效提高最大连接数。我记得以前看过一篇文章,讲的是调到5左右比较合适。

本文共计885个文字,预计阅读时间需要4分钟。

如何确定IIS服务器的最大并发连接数?

测试系统配置:Windows Server 2003,IIS 6.0,ASP.Net 3.5 sp1,双核CPU,2G内存,14G虚拟内存。为探究IIS的最大并发数,需进行几个假设设置。假设1:最大并发数即为当前的连接数。意图是了解当前系统能承受的最大并发连接数。

测试系统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),接下来开发一个用来保持连接的小程序。

Code
classProgram{
privatevolatilestaticinterrorCount=0;
privatevolatilestaticintrightCount=0;

staticvoidMain(string[]args){
ServicePointManager.DefaultConnectionLimit=10000;
intcount=0;
intall=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();
}

staticvoidCreateThread(){
Threadthread=newThread(ActiveRequest);
thread.IsBackground=true;
thread.Start();
}

staticvoidActiveRequest(){
RequestClientclient=newRequestClient("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
*birdshover.cnblogs.com
*description:
*
*history:createdbyyurow2009-8-160:29:05
*/

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Net;
usingSystem.IO;

namespaceMaxLinked{
///<summary>
///
///</summary>
publicclassRequestClient{
HttpWebRequestrequest;
WebResponseresponse;

publicRequestClient(stringurl){
request=(HttpWebRequest)HttpWebRequest.Create(url);
request.Timeout=int.MaxValue;
request.KeepAlive=true;
ErrorCode=-1;
}

publicvoidAddHeader(stringname,stringvalue){
request.Headers.Add(name,value);
}

privateboolisError=false;
privateStringBuilderbuffer=newStringBuilder();

publicintErrorCode{get;set;}

publicboolIsError{
get{returnisError;}
}

publicstringMessages{
get{returnbuffer.ToString();}
}

publicvoidRequestProcess(){
try{
response=request.GetResponse();
}catch(WebExceptionex){
ErrorCode=(int)ex.Status;
buffer.Append(ex.Message);
isError=true;
}
if(response!=null){
Streamstream=null;
StreamReaderreader=null;
try{
//stream=response.GetResponseStream();
//reader=newStreamReader(stream,Encoding.UTF8);
//buffer.Append(reader.ReadToEnd());
}catch(Exceptionex){
buffer.Append(ex.Message);
isError=true;
}finally{
//if(reader!=null)
//reader.Close();
//if(stream!=null)
//stream.Close();
}
}else{
isError=true;
buffer.Append("建立连接失败!");
}
}

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

程序设置为只能启动1800个线程,这是由于.Net单进程最大线程数好像是2000个。因此,要测试最大并发数,要需要同时开几个测试进程。把系统虚拟内存调到最大值,线程过多会急剧占用内存。现在开始测试。

如何确定IIS服务器的最大并发连接数?

打开web站点的性能计数器,把显示比例调成1万。

发现到5000个连接时,IIS服务器崩溃(503错误),去洗了个澡,发现IIS服务器无法自己修复错误。又测试了几次,发现最大并发值是8200个,但是一般到5000左右就会崩溃,有时候甚至只有1000个。

按8200个计算,一个用户开一个浏览器浏览网页,可能会占用2~3个连接(参考《IIS连接数实验——Web开发必读 》),按两个计算,那么IIS默认情况下,最大并发数是4000个左右。

打开应用程序池配置,把最大工作进程数调高(默认为1),能有效提高最大连接数。我记得以前看过一篇文章,讲的是调到5左右比较合适。