O que é um pool de conexões de saída?
A transmissão de dados ocorre serialmente em uma conexão persistente HTTP. O remetente deve aguardar a resposta da solicitação anterior antes de enviar a próxima. Um pool de conexões de saída fornece recursos de conexão para que uma instância do API Gateway acesse um serviço de backend.
Por exemplo, se você adquiriu uma instância dedicada do tipo api.s1.small com um pool de conexões de saída de 1.200 e seu serviço de backend leva um segundo para responder a cada solicitação, a instância suporta no máximo 1.200 solicitações de saída por segundo (RPS). Caso mais de 1.200 solicitações sejam enviadas em um segundo, as excedentes entram em fila de espera, pois o pool de conexões estará totalmente ocupado. Se uma solicitação não obtiver recursos de conexão dentro de 500 milissegundos, o sistema retornará o erro Backend service connect failed 'Connection lease request time out. Para evitar esses erros, configure o Simple Log Service para enviar alertas antes que os recursos de conexão se esgotem. Assim, você poderá resolver a escassez de recursos rapidamente.
Pré-requisitos
Os logs do API Gateway devem estar ativados. Para mais informações, consulte Usar o Log Service para gerenciar logs de chamadas de API.
Configurar uma regra de alerta para o pool de conexões
O Log Service aciona um alerta quando as condições definidas em uma regra de alerta são atendidas.
Quando o pool de conexões de saída se esgota, o API Gateway retorna o erro Backend service connect failed 'Connection lease request time out' ao cliente. Esse erro fica registrado no campo errorMessage dos logs. Configure um alerta com base nessa mensagem de erro. Para mais informações, consulte Configurar uma regra de monitoramento de alerta no Log Service.
Na Etapa 2 do tópico referenciado, configure uma regra de alerta com base no ID da instância, no ID do erro e na mensagem de erro. Use a instrução de consulta e análise a seguir como exemplo.
instanceId: apigateway-cn-XXXXX and errorId : D504CO and '`Connection lease request time out`'
Na caixa de diálogo Query and Statistics, clique em na aba Advanced Settings. Defina Type como Logstore. Em Region, selecione a região onde a instância está localizada. Nos campos Project e Logstore, insira o Project e o Logstore correspondentes aos seus logs do API Gateway, como ali-apigateway-log-cn-beijing e gateway_request_log, respectivamente. Defina Dedicated SQL como Disabled. Configure o Time Range para 15 Minutes (Relative).
Resolver o esgotamento do pool de conexões de saída
-
Faça upgrade da instância do API Gateway.
Caso utilize uma instância serverless, adquira primeiro uma instância dedicada e depois migre o grupo de APIs para ela. Para mais informações, consulte Migrar grupos de APIs entre instâncias.
Se a instância for dedicada, atualize as especificações dela no console do API Gateway. Para mais detalhes, consulte Alterar especificações da instância.
Verifique o tempo de resposta do serviço de backend. Essa métrica (unidade: ms) aparece no campo serviceLatency dos logs e mede a duração desde o envio da solicitação pelo API Gateway ao serviço de backend até o recebimento do último pacote da resposta. Respostas lentas contribuem para o esgotamento dos recursos de conexão de saída. Recomendamos configurar também uma regra de alerta para o valor de serviceLatency. Se o serviceLatency permanecer alto, otimize o tempo de resposta do backend para evitar que o pool de conexões se esgote.