Как мне справиться с высокой нагрузкой на TIdHTTPServer? - PullRequest
0 голосов
/ 11 февраля 2019

Мне нужно управлять высокой нагрузкой на мой TIdHTTPServer.Как мне настроить свой сервер, чтобы справиться с этим?

Я написал простой тест, чтобы понять поведение моего TIdHTTP.

С клиента я отправляю несколько запросов в секунду, напримерэто:

procedure TTestThread.Execute;
var
  i: integer;
  c: ISP<TIdHTTP>;
  s: string;
begin
  { Place thread code here }
  c := TSP<TIdHTTP>.Create();
  while not Terminated do
  begin
    for i := 0 to FCountRequestsPerSecond - 1 do
    begin
      s := c.Get('http://localhost:7777/Test/DBConnection');
    end;
    sleep(1000);
  end;
end;

На сервере я делаю что-то вроде этого:

var
  json: ISuperObject;
begin
  DB.Connect();
  json := SO;
  json.B['connected'] := DB.FDConnection.Connected; 
  FResponses.OkWithJson(json.AsJSon(false, false));
end;

Я вижу, что если я установлю FCountRequestsPerSecond = 500, он будет работать достаточно хорошо.Но если я увеличу его до 1000, он станет нестабильным, и некоторые запросы сообщают об ошибке сокета.

Мой вопрос: как мне справиться с высокой загрузкой моего TIdHTTPServer?Какие инструменты возможны в этой ситуации?Как мне проверить мой TIdHTTPServer, чтобы он провалился?

...