Configuración de Single-Instance Multi-Concurrency
Esta función solo es compatible con FunctionGraph v2.
Información general
La multiconcurrencia de instancia única permite que una instancia procese simultáneamente un número especificado de solicitudes. Esta característica tiene las siguientes ventajas:
- Mejora la eficiencia de la ejecución de la función y reduce la duración de la ejecución.
- Reduce la probabilidad de arranques en frío.
- Reduce el número total de instancias y ahorra recursos.
Escenarios de la aplicación
Si las solicitudes de función tardan mucho tiempo en esperar la respuesta de los servicios descendentes, puede configurar una instancia multiconcurrencia para que las solicitudes se puedan procesar simultáneamente.
Comparación
Si una función tarda 5 segundos en ejecutarse cada vez y establece el número de solicitudes que una instancia puede procesar simultáneamente en 1, tres solicitudes deben procesarse en tres instancias, respectivamente. Por lo tanto, la duración total de la ejecución es 15s.
Cuando se establece Max. Requests per Instance a 5, si se envían tres solicitudes, serán procesadas simultáneamente por una instancia. El tiempo total de ejecución es de 5s.
Cuando Max. Requests per Instance son mayores que 1, se debe considerar la competencia de recursos y la seguridad de simultaneidad.
Las solicitudes excesivas deben esperar un tiempo antes de ser procesadas. Por ejemplo, si el número de solicitudes concurrentes de una única instancia se establece en 10, el sistema no devuelve un error inmediatamente cuando el número de solicitudes excede la capacidad de procesamiento. Las solicitudes excesivas se procesarán después de un período de tiempo.
Artículo de comparación |
Single-Instance Single-Concurrency |
Single-Instance Multi-Concurrency |
---|---|---|
Impresión de registros |
- |
Para imprimir registros, Node.js Runtime utiliza la función console.info (), Python Runtime utiliza la función print (), y Java Runtime utiliza la función System.out.println (). En este modo, los ID de solicitud actuales se incluyen en el contenido del registro. Sin embargo, cuando una instancia procesa varias solicitudes simultáneamente, los ID de solicitud son incorrectos si continúa utilizando las funciones anteriores para imprimir registros. Para resolver este problema, utilice la función context.getLogger().log() en su lugar. Este método conserva los ID de solicitud por separado. |
Variables compartidas |
Que no participan. |
La modificación de las variables compartidas causará errores. La protección de exclusión mutua es necesaria cuando se modifican variables no seguras para subprocesos durante la escritura de funciones. |
Métricas de monitoreo |
Realizar monitoreo basado en la situación real. |
Bajo la misma carga, el número de instancias de función disminuye significativamente. |
Error de control de flujo |
Que no participan. |
Cuando hay demasiadas solicitudes, el código de error en el cuerpo es FSS.0429, el estado en el encabezado de respuesta es 429, y el mensaje de error es Your request has been controlled by overload sdk, please retry later. |
Configuración de Single-Instance Multi-Concurrency
- Inicie sesión en la consola de FunctionGraph. En el panel de navegación, seleccione Functions > Function List.
- Haga clic en la función que se va a configurar para ir a la página de detalles de la función.
- Seleccione Configuration > Concurrency.
Defina los parámetros haciendo referencia a Tabla 2y haga clic en Save.Figura 1 Configuración de simultaneidad
Tabla 2 Descripción Parámetro
Descripción
Max. Requests per Instance
Número de solicitudes simultáneas admitidas por una sola instancia. Rango de valores: 1–100. Para más detalles, consulte Configuración de Single-Instance Multi-Concurrency.
Max. Instances per Function
Número máximo de instancias en las que se puede ejecutar una función. -1 (predeterminado): La función puede ejecutarse en cualquier número de instancias. 0: La función está deshabilitada.
NOTA:Las solicitudes que excedan la capacidad de procesamiento de las instancias serán descartadas.
Los errores causados por solicitudes excesivas no se mostrarán en los registros de funciones. Puede obtener detalles de error haciendo referencia a Configuración de la notificación de ejecución asincrónica.
Restricciones de configuración
- 128 MB de memoria: hasta 25 solicitudes simultáneas
- 256 MB de memoria: hasta 50 solicitudes simultáneas
- 512 MB o más de memoria: hasta 100 solicitudes simultáneas