如何管理TIdHTTPServer上的高负载?

时间:2019-02-11 19:14:59

标签: delphi indy idhttp

我需要管理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使其失败?

0 个答案:

没有答案