• EnglishEspañol日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

Crea una propuesta

Introducción a la instrumentación asíncrona de Java

New Relic para Java incluye un conjunto de métodos API para instrumentación personalizada de actividad asincrónica. Esto es más útil para instrumentar la actividad asincrónica en un marco no compatible, pero también puede usar la API para agregar instrumentación a un marco compatible. Este documento explica cómo se produce la actividad asincrónica y cómo funciona el monitor asincrónico de New Relic.

Operaciones asincrónicas

Con un modelo de programación synchronous , las tareas de programación normalmente se ejecutan en un orden específico. Una tarea debe completarse antes de que comience la siguiente, y cada tarea bloquea la finalización de la siguiente.

Asynchronous La programación utiliza un modelo sin bloqueo, por lo que las tareas se pueden ejecutar en paralelo. Las tareas ejecutadas de forma asincrónica son completamente independientes entre sí en su ejecución e inicialización. Debido a que el código asincrónico no se ejecuta en un orden específico, toda la potencia de procesamiento del servidor se puede utilizar de manera más eficiente y el rendimiento de la aplicación aumenta.

Asíncrono y cambio de subprocesos

Para aplicaciones que utilizan procesamiento asincrónico, thread-switching es cuando un programa o tarea cambia de un subproceso a otro. Comprender estos entrelazados asincrónicos puede ayudarle a decidir qué métodos deben instrumentarse.

A continuación se muestra un método de ejemplo con un controlador que realiza solicitudes externas en paralelo. Estas solicitudes se ejecutan de forma asincrónica, por lo que cada solicitud se ejecuta de forma independiente y getScoreAsync() regresa inmediatamente después de ser llamada. Esto permite que el hilo solicitante continúe realizando solicitudes mientras getScoreAsync() realiza una llamada externa y envía una respuesta.

@ResponseBody
@RequestMapping("getScores", method = RequestMethod.Get
produces = "text/plain")
public String getCreditScores(@RequestParam(name = "uids") uids) {
return Arrays.stream(uids.split(","))
.parallel()
.map(Integer::valueOf)
.map(uid -> getScoreAsync(uid))
.collect(Collectors.toList());}

Algunas de estas solicitudes terminarán antes que otras. Algunos incluso podrían terminar después de que el hilo solicitante haya pasado a otras tareas:

En laUI , en la vista en cascada de detalles de la traza, la UI muestra una actividad asincrónica superpuesta en el eje x horizontal.

Asíncrono y tiempo de respuesta

Response time se define como la duración de una transacción desde la perspectiva del solicitante. Para una aplicación asincrónica, el tiempo de respuesta suele ser menor que el tiempo total de transacción. Esto se debe a que los métodos no tienen que esperar a que se completen todos los métodos anteriores antes de regresar. Como las tareas se pueden aplazar, la aplicación puede aprovechar sus recursos limitados y procesar las cosas más rápidamente.

La línea de tiempo de respuesta del gráfico le brinda más información valiosa sobre el comportamiento percibido y la velocidad de su aplicación que el tiempo total de transacción web:

one.newrelic.com > All capabilities > APM & services > (select an app) > Summary: En la página APM Summary , la actividad asincrónica en una aplicación Java puede resultar en que el tiempo de respuesta (la línea azul) sea menor que el tiempo total de transacción. Esto se debe a que los métodos no tienen que esperar a que se completen todos los métodos anteriores antes de regresar.

Instrumentación personalizada con la API asíncrona

Para implementar instrumentación personalizada de trabajo asíncrono, consulte la guía de API asíncrona del agente de Java. Para obtener información general sobre cómo utilizar la API del agente de Java, consulte la guía de la API del agente de Java.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.