Мне нужно управлять высокой нагрузкой на мой 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
, чтобы он провалился?