VSTS 2008 + C# + .Net 3.5를 사용하여 콘솔 응용 프로그램을 개발하고 다른 서버 (Windows Server 2008의 IIS 7.0)에 요청을 보냅니다. 요청 스레드 수가 크면 IIS 7.0에서 http 503 오류로 응답합니다. 어떤 아이디어가 잘못되었거나 IIS 7.0이 더 많은 요청을 처리하도록 조정하는 방법은 무엇입니까? 여기 C#에서 HTTP 요청 오류 (Http 503) 보내기
내가 처리하는 데 걸린 IIS 관리하지만, 웹 서버의 용량은 다양한 요인에 따라 달라집니다 CPU 기능, 사용 가능한 메모리, 요청 처리 시간에 대해 잘 모르는class Program
{
private static int ClientCount = 100;
private static string TargetURL = "http://labtest/abc.wmv";
private static int Timeout = 200;
static void PerformanceWorker()
{
Stream dataStream = null;
HttpWebRequest request = null;
HttpWebResponse response = null;
StreamReader reader = null;
try
{
request = (HttpWebRequest)WebRequest.Create(TargetURL);
request.Timeout = Timeout * 1000;
request.Proxy = null;
response = (HttpWebResponse)request.GetResponse();
dataStream = response.GetResponseStream();
reader = new StreamReader(dataStream);
// 1 M at one time
char[] c = new char[1000 * 10];
while (reader.Read(c, 0, c.Length) > 0)
{
Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "\n" + ex.StackTrace);
}
finally
{
if (null != reader)
{
reader.Close();
}
if (null != dataStream)
{
dataStream.Close();
}
if (null != response)
{
response.Close();
}
}
}
static void Main(string[] args)
{
Thread[] workers = new Thread[ClientCount];
for (int i = 0; i < ClientCount; i++)
{
workers[i] = new Thread((new ThreadStart(PerformanceWorker)));
}
for (int i = 0; i < ClientCount; i++)
{
workers[i].Start();
}
for (int i = 0; i < ClientCount; i++)
{
workers[i].Join();
}
return;
}
}
정말로 100 개의 동시 요청을하고 있습니까? – RobV
예, 물론입니다. 너 왜 그런 의심스러운거야? :-) – George2