2009-10-13 2 views
0

Я использую следующий код, чтобы попытаться проверить, будет ли потребление сети (отслеживается с вкладки сети диспетчера задач) увеличиваться, если я увеличиваю число одновременных подключений (то есть значение конфигурации приложения ClientCount). Но я нахожу, даже если я увеличиваю количество клиентов с 100 до 500, потребление сети остается тем же (около 3% -4%, как с клиентской, так и с серверной стороны). Какие-нибудь идеи, что не так? Я хочу доказать, увеличивается ли одновременное число с клиентской стороны, и потребление сети клиента и сервера будет расти.Возможности подключения к сети не используются в полной мере, почему?

Вот мой конфигурационный код приложения и клиентский код. URL-адрес представляет собой файл wmv, размещенный в режиме управления скоростью передачи данных IIS 7.0 на другом компьютере в локальной локальной сети. Я использую VSTS 2008 + C# + .Net 3.5 для разработки консольного приложения в качестве клиента.

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.net> 
    <connectionManagement> 
     <add address="*" maxconnection="1000000" /> 
    </connectionManagement> 
    </system.net> 
    <appSettings> 
    <add key="URL" value="http://labtest2/test.wmv"/> 
    <add key="ClientCount" value="100"/> 
    <add key="Timeout" value="3600"/> 
    </appSettings> 
</configuration> 

class Program 
{ 
    private static int ClientCount = 100; 
    private static string TargetURL = String.Empty; 
    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 * 1000]; 

      while (reader.Read(c, 0, c.Length) > 0) 
      { 
       Console.WriteLine(Thread.CurrentThread.ManagedThreadId + ":\t" + c[0]); 
      } 
     } 
     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) 
    { 
     TargetURL = ConfigurationSettings.AppSettings["URL"]; 
     ClientCount = Int32.Parse(ConfigurationSettings.AppSettings["ClientCount"]); 
     Timeout = Int32.Parse(ConfigurationSettings.AppSettings["Timeout"]); 
     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; 
    } 
} 

ответ

1

Возможно, существует ограничение на максимальные одновременные вызовы на сервере, можете ли вы его проверить? Некоторые серверы разрешают, например, 10 параллельных соединений (или фактически они также могут быть однопоточными с одним одновременным вызовом).

+0

Где вы имеете в виду ограничения на стороне сервера для проверки? web.config или в диспетчере IIS? – George2

+0

Я пробовал на IIS 7 для Windows Server 2008, он отлично работает. Но на IIS 7 для Windows 7 возникают проблемы, почему? – George2

Смежные вопросы