HashLoad / horse

Fast, opinionated, minimalist web framework for Delphi
MIT License
1.17k stars 217 forks source link

Maximum number of concurrent connections exceeded #344

Closed aesjunior2707 closed 1 year ago

aesjunior2707 commented 1 year ago

Olá, tudo bem ? meu servidor horse está devolvendo a seguinte mensagem "Maximum number of concurrent connections exceeded" queria saber se existe alguma propriedade que eu possa setar um valor de conexão, e se sim qual seria o valor máximo para colocar na propriedade ?

viniciussanchez commented 1 year ago

Bom dia.. THorse.MaxConnections := X; Se não me engano o padrão é 32. Isso é apenas para alguns tipos de aplicações, por exemplo, console, VCL...

cachopaweb commented 1 year ago

Qual banco de dados vc está usando, Firebird? Me parece uma mensagem deste tipo de banco...

aesjunior2707 commented 1 year ago

Qual banco de dados vc está usando, Firebird? Me parece uma mensagem deste tipo de banco...

Estou usando tanto SQLServer quanto PG

cachopaweb commented 1 year ago

Pode ser que vc esta usando múltiplas instâncias de conexões, tive esse mesmo problema com bancos firebird, e resolvi fazendo uma lista de conexões e liberando-as após o uso em cada end-point. Ex. classe conexão:

-----
var
  FDriver : TFDPhysFBDriverLink;
  FConnList : TObjectList<TFDConnection>;

function TConnectionFiredac.Connected: Integer;
begin
  if not Assigned(FConnList) then
     FConnList := TObjectList<TFDConnection>.Create;

  FConnList.Add(TFDConnection.Create(nil));
  Result := Pred(FConnList.Count);
  FConnList.Items[Result].Params.DriverID := 'FB';
  FConnList.Items[Result].Params.Database := FCaminhoBD;
  FConnList.Items[Result].Params.UserName := FUsuario;
  FConnList.Items[Result].Params.Password := FSenha;
  FConnList.Items[Result].Params.Add('CharacterSet=utf8');
  FConnList.Items[Result].Connected;
end;

procedure TConnectionFiredac.Disconnected(Index: Integer);
begin
  FConnList.Items[Index].Connected := False;
  FConnList.Items[Index].Free;
end;

end.
aesjunior2707 commented 1 year ago

Acredito que no meu caso não seja esse problema, tentamos solucionar usando da seguinte maneira :

Horse.MaxConnections := High(Integer);**

Porém não obtivemos sucesso, teria uma maneira de pegar o numero de conexões ativas no horse @viniciussanchez ?

dliocode commented 1 year ago

@aesjunior2707 Essa mensagem é do limite de conexões REST; Para resolver, vai utilizar o THorse.MaxConnections := 10000;

Lembrando que existe uma limitação para conexões com o Banco de Dados; O postgres tem um limite default de 100 conexões;

É recomendado verificar no seu banco de dados esse limite e se possível aumentar esse valor;

aesjunior2707 commented 1 year ago

Obrigado @dliocode !