Как проверить ограничение на выполнение одновременных запросов IIS7

У меня есть пример хост-модуля ISAPI на IIS7 в Windows Vista Ultimate на виртуальной машине. Согласно выпускам IIS 7.0 и Windows, предел одновременного выполнения запроса составляет десять для Windows Vista Ultimate. Я пишу пример приложения для тестирования ограничения на выполнение одновременных запросов IIS7:

procedure TForm1.Button1Click(Sender: TObject);
const c_Max = 20;
var P: TProc<string>;
    o: TThread;
    i: integer;
    A: array of TThread;
begin
  P :=
    procedure(aValue: string)
    begin
      Memo1.Lines.Add(aValue);
    end;

  SetLength(A, c_Max);
  for i := Low(A) to High(A) do begin
    o := TMyThread.Create(P, edHostName.Text, Format('test%d', [i + 1]), True);
    o.FreeOnTerminate := True;
    A[i] := o;
  end;

  for o in A do
    o.Start;
end;

constructor TMyThread.Create(const aMethod: TProc<string>; const aHostName,
    aValue: string; const aCreateSuspended: boolean);
begin
  inherited Create(aCreateSuspended);
  FMethod := aMethod;
  FHostName := aHostName;
  FValue := aValue;
end;

procedure TMyThread.Execute;
var C: TSQLConnection;
    o: TServerMethods1Client;
    S: string;
begin
  C := TSQLConnection.Create(nil);
  C.DriverName := 'DataSnap';
  C.LoginPrompt := False;
  with C.Params do begin
    Clear;
    Values[TDBXPropertyNames.DriverUnit] := 'Data.DBXDataSnap';
    Values[TDBXPropertyNames.HostName] := FHostName;
    Values[TDBXPropertyNames.Port] := IntToStr(80);
    Values[TDBXPropertyNames.CommunicationProtocol] := 'http';
    Values[TDBXPropertyNames.URLPath] := 'MyISAPI/MyISAPI.dll';
  end;

  S := Format('%d=', [ThreadID]);
  try
    try
      C.Open;
      o := TServerMethods1Client.Create(C.DBXConnection);
      try
        S := S.Format('%s%s', [S, o.EchoString(FValue)]);
      finally
        o.Free;
      end;
    except
      on E: Exception do
        S := S.Format('%s%s', [S, E.Message]);
    end;
  finally
    Synchronize(
      procedure
      begin
        FMethod(S);
      end
    );
    C.Free;
  end;
end;

Когда я нажимаю Button1, Memo1 отображает 20 строк строки (ThreadID = результат EchoString), хотя я изменяю постоянную переменную c_Max на 500, я все равно не могу получить строку строки (ThreadID = сообщение об исключении) отображается на Памятка1. Мой вопрос: как проверить ограничение на выполнение одновременных запросов IIS7?


person lmengyew    schedule 28.05.2013    source источник
comment
Вместо использования клиента DataSnap вы также можете указать тот же URI ресурса с помощью такого инструмента, как Apache JMeter или Сканер Apache   -  person mjn    schedule 28.05.2013
comment
внезапно HTTPAPI выглядит еще интереснее: msdn.microsoft. com/en-us/library/aa364510(v=vs.85).aspx   -  person Stijn Sanders    schedule 28.05.2013
comment
Я успешно протестировал ограничение на выполнение одновременных запросов IIS7, используя Apache JMeter.   -  person lmengyew    schedule 30.05.2013
comment
Спасибо mjn и Stijn Sanders за комментарий.   -  person lmengyew    schedule 30.05.2013