Monitorando o Uso e a Disponibilidade da Memória para Simultaneidade Provisionada

Descubra como monitorar o uso e a disponibilidade de memória para simultaneidade provisionada pelo OCI Functions.

O OCI Functions tem um limite para a quantidade total de memória disponível para simultaneidade provisionada para todas as funções em uma região. O limite é chamado provisioned-concurrency-mb e especifica a quantidade máxima de memória que pode ser alocada para simultaneidade provisionada.

O limite de memória provisioned-concurrency-mb tem um valor padrão, conforme mostrado em Limites de Funções. O valor padrão pode já ter sido aumentado em sua tenancy, talvez em resposta a solicitações de Suporte que foram registradas em ocasiões anteriores quando a capacidade de memória foi excedida.

Você pode usar a Console para ver o valor atual do limite de memória provisioned-concurrency-mb em uma região (consulte Exibindo o Limite de Memória Atual para Simultaneidade Provisionada).

Se o OCI Functions precisar de mais memória para simultaneidade provisionada para evitar latência inicial ao chamar funções, você poderá enviar uma solicitação para aumentar o limite de memória provisioned-concurrency-mb (consulte Solicitando um Aumento do Limite de Serviço).

Em vez de aguardar o limite de memória provisioned-concurrency-mb ser atingido e, em seguida, atender ao requisito, você pode usar o Oracle Cloud Infrastructure Monitoring e a métrica AllocatedProvisionedConcurrency para monitorar a quantidade de memória disponível para simultaneidade provisionada alocada. Observe que o valor da métrica AllocatedProvisionedConcurrency é a quantidade de memória alocada. A quantidade de memória na verdade usada para simultaneidade provisionada é sempre menor ou igual ao valor da métrica AllocatedProvisionedConcurrency. Para obter mais informações, consulte Exibindo a Quantidade de Memória Recentemente Alocada para Execução de Função Concorrente.

Você também pode usar a métrica AllocatedProvisionedConcurrency para criar um alarme para notificá-lo se a alocação de memória de simultaneidade provisionada ultrapassar um limite definido por você. Para obter mais informações, consulte Criando um alarme de limite de alocação de memória de simultaneidade provisionado.

Exibindo o Limite de Memória Atual para Simultaneidade Provisionada

Para exibir o limite de memória atual para simultaneidade provisionada:

  1. Abra o menu de navegação e selecione Governança e Administração. Em Gerenciamento de Tenancy, selecione Limites, Cotas e Uso.

  2. Selecione Funções na lista Serviço.
  3. Selecione a região na lista Escopo.

  4. Selecione o compartimento raiz na lista Compartimento.

    O limite provisioned-concurrency-mb mostra o limite de memória atual para simultaneidade provisionada.

  5. (Opcional) Para solicitar memória adicional para simultaneidade provisionada, selecione o menu Ações (três pontos) ao lado do limite provisioned-concurrency-mb, selecione Abrir Solicitação de Suporte e siga as instruções.

Exibindo a quantidade de memória alocada recentemente para simultaneidade provisionada

Para exibir a quantidade de memória alocada recentemente para simultaneidade provisionada:

  1. Abra o menu de navegação e selecione Observabilidade e Gerenciamento. Em Monitoramento, selecione Explorador de Métricas.

  2. Use os campos Hora inicial e Hora final para especificar um período representativo a ser analisado.
  3. No painel Consulta 1, crie uma consulta da seguinte forma:
    1. Para Compartimento, selecione o compartimento raiz.
    2. Para Namespace de métricas, selecione oci_faas.
    3. Selecione a opção Modo avançado e informe uma das seguintes consultas no Editor de código de consulta:
      • Para mostrar a quantidade total de memória alocada para simultaneidade provisionada de todas as funções na tenancy em intervalos de 5 minutos, durante o período especificado, informe a seguinte consulta:
        AllocatedProvisionedConcurrency[5m].groupBy(resourceId).max().grouping().sum()
      • Para mostrar a quantidade total de memória alocada para simultaneidade provisionada para uma função específica em intervalos de 5 minutos, durante o período especificado, informe a seguinte consulta:
        AllocatedProvisionedConcurrency[5m]{resourceId = "<function-OCID>"}.max()

        em que <function-OCID> é o OCID de uma função. Por exemplo:

        AllocatedProvisionedConcurrency[5m]{resourceId = "ocid1.fnfunc.oc1.phx.aaaa____uxoa"}.max()
  4. Selecione Atualizar Gráfico.

    O gráfico é atualizado e mostra a quantidade de memória alocada para simultaneidade provisionada durante o período selecionado.

Criando um alarme de limite de alocação de memória de simultaneidade provisionado

Para criar um alarme acionado quando a alocação de memória de simultaneidade provisionada excede um limite definido por você:

  1. Abra o menu de navegação e selecione Observabilidade e Gerenciamento. Em Monitoramento, selecione Definições de Alarme.

  2. Selecione Criar Alarme.
  3. Para Nome do alarme, informe um nome significativo para o alarme. Evite digitar informações confidenciais.
  4. Selecione a opção Alternar para Modo Avançado.
  5. Na área Detalhes da métrica, especifique a métrica a ser avaliada para o alarme, da seguinte forma:
    1. Para Compartimento, selecione o compartimento raiz.
    2. Para Namespace de métricas, selecione oci_faas.
  6. Na área Regra do acionador, especifique a condição que deve ser satisfeita para que o alarme seja acionado:
    • Minutos de atraso do trigger: Informe o número de minutos em que a condição deve ser mantida para que o alarme seja acionado.
    • Severidade do alarme: Selecione a importância a ser dada a uma notificação de que o alarme foi acionado.
    • Editor de código de consulta: Informe uma consulta para definir uma condição que, quando satisfeita, faça com que o alarme seja acionado, da seguinte forma:

      • Se quiser que o alarme seja acionado quando a alocação de memória para simultaneidade provisionada exceder uma determinada quantidade, informe a seguinte consulta:
        AllocatedProvisionedConcurrency[5m].grouping().sum() > <memory-threshold>

        em que <memory-threshold> é uma quantidade de memória (em MiB) a ser usada como limite, acima do qual você deseja que o alarme seja acionado.

        Por exemplo, talvez você queira que um alarme seja acionado quando a quantidade de memória alocada para simultaneidade provisionada exceder 70% da memória total disponível para simultaneidade provisionada. Se a memória total para simultaneidade provisionada for de 40 GB (ou seja, 40.960 MiB), informe a seguinte consulta:

        AllocatedProvisionedConcurrency[5m].grouping().sum() > 28672
      • Se você quiser que o alarme seja acionado quando a alocação de memória para simultaneidade provisionada para uma função específica exceder uma determinada quantidade, informe a seguinte consulta:
        AllocatedProvisionedConcurrency[5m]{resourceId = "<function-OCID>"}.max() > <memory-threshold>
        em que:
        • <function-OCID> é o OCID da função
        • <memory-threshold> é uma quantidade de memória (em MiB) a ser usada como limite, acima do qual você deseja que o alarme seja acionado.

        Por exemplo, talvez você queira que um alarme seja acionado quando a quantidade de memória alocada para simultaneidade provisionada para uma única função exceder 10% da memória total disponível para simultaneidade provisionada. Se o total de memória disponível para simultaneidade provisionada for de 40 GB (ou seja, 40.960 MiB), informe a seguinte consulta:

        AllocatedProvisionedConcurrency[5m]{resourceId = "ocid1.fnfunc.oc1.phx.aaaa____uxoa"}.max() > 4096
  7. Selecione a opção Alternar para Modo Básico.
  8. Na área Definir notificações de alarme:
    1. Para Destino, especifique para onde as notificações serão enviadas quando o alarme for acionado:
      • Serviço de destino: Selecione Notificações.
      • Compartimento: Selecione o compartimento que contém os recursos que emitem as métricas avaliadas pelo alarme. O compartimento selecionado é também o local de armazenamento do alarme.
      • Tópico: O tópico a ser usado para notificações. Cada tópico é compatível com um ou mais protocolos de assinatura, como PagerDuty. Se um tópico adequado ainda não existir, selecione Criar um tópico e defina um novo tópico. Para referência, consulte Criando um Alarme Básico.
    2. Para Agrupamento de mensagens, selecione uma das seguintes opções:
      • Agrupar notificações em streams de métrica: Rastreie coletivamente o status da métrica em todos os streams de métrica. Envie uma mensagem quando o status da métrica for alterado em todos os streams de métricas.
      • Dividir notificações por stream de métrica: Rastreie individualmente o status da métrica por stream de métrica. Envie uma mensagem quando o status da métrica de cada stream de métrica for alterado. Para obter um exemplo, consulte Cenário: Dividir Mensagens por Stream de Métrica.
    3. Para Formato de Mensagem, selecione uma das seguintes opções:
      • Enviar mensagens formatadas: Layout simplificado e amigável. Para exibir protocolos de assinatura e tipos de mensagem suportados para mensagens formatadas (opções diferentes de Bruto), consulte Formatação amigável.
      • Enviar mensagens Pretty JSON (texto bruto com quebras de linha): JSON com novas linhas e recuos.
      • Enviar mensagens brutas: Blob de JSON bruto.
    4. Para suprimir avaliações e notificações por um período especificado, selecione Suprimir notificações. Essa opção é útil para evitar notificações de alarme durante períodos de manutenção do sistema. Especifique um horário de início, um horário de término e uma descrição opcional. Consulte Best Practices for Your Alarms e Suppressing a Single Alarm.
    5. Para salvar o alarme sem começar a avaliar dados de métrica, desmarque a caixa de seleção Ativar este alarme?.
  9. Selecione Salvar alarme.