Esta página ha sido traducida por una máquina.

Reducción de la latencia inicial mediante simultaneidad aprovisionada

Descubra cómo utilizar la simultaneidad aprovisionada para minimizar los retrasos iniciales al llamar a funciones en OCI Functions.

Cuando se llama a una función por primera vez (denominada "inicio en frío"), OCI Functions aprovisiona la llamada a la función con la infraestructura de ejecución que necesita. La infraestructura de ejecución incluye los recursos informáticos y de red necesarios para llamar correctamente a la función. El aprovisionamiento inicial, y por lo tanto la respuesta a la primera llamada, puede tardar una cantidad de tiempo variable (potencialmente varios segundos o más). La infraestructura de ejecución de la llamada de función inicial se retiene durante un período de tiempo (denominado "tiempo de inactividad"), para su uso por llamadas posteriores de la misma función. Cuando una llamada de función posterior puede hacer uso de la infraestructura existente (denominada "inicio en caliente"), generalmente hay un tiempo de respuesta de menos de un segundo a la llamada de función.

Es común que desee respuestas consistentes de menos de un segundo a las llamadas a funciones. Para minimizar cualquier latencia asociada con el aprovisionamiento inicial y garantizar los inicios en caliente, puede activar la concurrencia aprovisionada para una función. La simultaneidad aprovisionada es la capacidad de OCI Functions para tener siempre disponible la infraestructura de ejecución para al menos un determinado número mínimo de llamadas a funciones simultáneas. La simultaneidad aprovisionada se mide en "unidades de simultaneidad aprovisionada" (PCU). El número total de PCU disponibles depende del tamaño de la función, del límite de arrendamiento y de si se ha activado la simultaneidad aprovisionada para otras funciones del arrendamiento.

Para utilizar la simultaneidad aprovisionada, especifique el número de PCU necesarias para la función. Normalmente, deseará especificar un número similar de PCU al número de llamadas a funciones simultáneas que espera. La memoria disponible que especifique para una función determina el menor número de PCU que puede especificar para esa función y los incrementos en los que puede aumentar el número de PCU, de la siguiente manera:

Memoria Número mínimo de PCU: Aumente las PCU en incrementos de: Ejemplo
128 MB 40 40 80
256 MB 20 20 60
512 MB 10 10 50
1024 MB 10 10 40
2048 MB 10 10 30
3072 MB 10 10 30

Como puede ver, el valor de las PCU siempre debe ser un múltiplo de 10. Si la memoria disponible es de 256 MB, el valor de las PCU debe ser un múltiplo de 20. Si la memoria disponible es de 128 MB, el valor de las PCU debe ser un múltiplo de 40.

Puede especificar las PCU para una función de diferentes maneras:

  • Uso de la consola al crear una nueva función basada en una imagen de Docker existente que ya se ha transferido al registro de Docker (consulte Creación de funciones a partir de imágenes de Docker existentes).
  • Uso de la CLI de Oracle Cloud Infrastructure para crear o actualizar una función y especificación de la opción --provisioned-concurrency opcional, con el formato:
    --provisioned-concurrency "{\"strategy\": \"<CONSTANT|NONE>\", \"count\": <value>}"

    donde:

    • \"strategy\": \"<CONSTANT|NONE>\" indica si se debe utilizar la simultaneidad aprovisionada (en cuyo caso, especifique CONSTANT) o no la simultaneidad aprovisionada (en cuyo caso, especifique NONE)
    • \"count\": <value> indica el número mínimo de llamadas de función simultáneas, cuando \"strategy\": \"CONSTANT\"

    Por ejemplo:

    Comando
    oci fn function create --application-id ocid1.fnapp.oc1.phx.aaaaaaaaaf______r3ca --display-name helloworld-func --image phx.ocir.io/ansh81vru1zp/helloworld/helloworld-func:0.0.1 --memory-in-mbs 128 --provisioned-concurrency "{\"strategy\": \"CONSTANT\", \"count\": 40}"
    Comando
    oci fn function update --function-id ocid1.fnfunc.oc1.phx.aaaa____uxoa --provisioned-concurrency "{\"strategy\": \"CONSTANT\", \"count\": 40}"

    Tenga en cuenta que los parámetros --provisioned-concurrency deben tener un formato JSON válido, que depende de la plataforma que utilice (consulte Gestión de entrada y salida de la CLI). Puede proporcionar los parámetros como una cadena en la línea de comandos, como un archivo o como una cadena de línea de comandos y como un archivo.

  • Con la API (consulte CreateFunction y UpdateFunction).

¿Le ha resultado útil este artículo?