Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
La característica Java Profiler se encuentra en versión preliminar desde la versión 3.4.0.
Java Profiler proporciona un sistema para:
- Generar perfiles de JDK Flight Recorder (JFR) a petición desde el entorno Máquina virtual Java (JVM).
- Generar perfiles de JFR automáticamente cuando se cumplen ciertas condiciones de desencadenamiento desde JVM, como el hecho de que la CPU o la memoria superen un umbral configurado.
Información general
Java Profiler utiliza el generador de perfiles JFR proporcionado por la JVM para registrar datos de perfiles, lo que permite a los usuarios descargar las grabaciones JFR posteriormente y analizarlas para identificar la causa de los problemas de rendimiento.
Estos datos se recopilan a petición cuando se cumplen las condiciones de desencadenamiento. Los desencadenadores disponibles son umbrales sobre el uso de CPU, el consumo de memoria y la solicitud (desencadenadores de contrato de nivel de servicio). Los desencadenadores de solicitudes supervisan los intervalos generados por OpenTelemetry y permiten al usuario configurar los requisitos del contrato de nivel de servicio (SLA) durante la duración de esos intervalos.
Cuando se alcanza un umbral, se recopila y carga un perfil de la duración y el tipo configurados. Este perfil es visible en el panel de rendimiento de la interfaz de usuario del portal de Application Insights asociado.
Advertencia
El generador de perfiles de JFR ejecuta de manera predeterminada el perfil "profile-without-env-data". Un archivo JFR es una serie de eventos que emite JVM. La configuración "profile-without-env-data" es similar a la configuración "profile" que se incluye con JVM; sin embargo, se han deshabilitado algunos eventos que tienen la posibilidad de contener información confidencial sobre la implementación, como variables de entorno, argumentos proporcionados a JVM y procesos que se ejecutan en el sistema.
Las marcas que ya no están disponibles son las siguientes:
- jdk.JVMInformation
- jdk. InitialSystemProperty
- jdk.OSInformation
- jdk.InitialEnvironmentVariable
- jdk. SystemProcess
Sin embargo, debe revisar todas las marcas habilitadas para asegurarse de que los perfiles no contengan datos confidenciales.
Consulte Configuración del contenido del perfil al establecer una configuración personalizada del generador de perfiles.
Requisitos previos
JVM con la funcionalidad Java Flight Recorder (JFR)
- Java 8, actualización 262+
- Java 11+
Advertencia
No se admite OpenJ9 JVM.
Uso
Desencadenadores
Para obtener una descripción más detallada de los distintos desencadenadores disponibles, consulte Perfil de aplicaciones de producción en Azure con Application Insights Profiler para .NET.
El agente de Java de ApplicationInsights supervisa la CPU, la memoria y la duración de la solicitud, como una transacción empresarial. Si infringe un umbral configurado, se desencadena un perfil.
Generar perfiles ahora
En la interfaz de usuario del generador de perfiles hay un botón Perfil ahora (consulte Configuración de Application Insights Profiler para .NET). Al seleccionar este botón, se solicitará inmediatamente un perfil en todos los agentes asociados a la instancia de Application Insights. La duración predeterminada de la generación de perfiles es de dos minutos. Puede cambiarla invalidando periodicRecordingDurationSeconds
(consulte Archivo de configuración).
Advertencia
Al invocar Perfil ahora se habilitará la función del generador de perfiles, y Application Insights aplicará los desencadenadores de SLA de CPU y memoria predeterminados. Cuando la aplicación infrinja esos acuerdos de nivel de servicio, Application Insights recopilará perfiles de Java. Si deseara deshabilitar el generación de perfiles más adelante, podrá hacerlo en el menú desencadenador que se muestra en Instalación.
Unidad Central de Procesamiento (CPU)
El umbral de CPU es un porcentaje de la utilización de todos los núcleos disponibles en el sistema.
Por ejemplo, si un núcleo de una máquina de ocho núcleos estuviera saturado, el porcentaje de CPU se consideraría 12,5 %.
Memoria
El porcentaje de memoria es la ocupación de la región de memoria de antigüedad (OldGen) actual con respecto al tamaño máximo posible de la región.
La ocupación se evalúa después de que se haya realizado una recopilación de antigüedad. El tamaño máximo de la región de antigüedad es el tamaño que sería si el montón de Máquina virtual Java (JVM) creciese hasta su tamaño máximo.
Por ejemplo, póngase en el siguiente escenario:
- El montón de Java podría crecer hasta un máximo de 1024 MB.
- La generación de antigüedad podría crecer hasta el 90 % del montón.
- El tamaño máximo posible de la antigüedad serían 922 MB.
- El umbral se estableció a través de la interfaz de usuario en un 75 %, por lo que el umbral sería el 75 % de 922 MB, es decir, 691 MB.
En este escenario, se genera un perfil en las siguientes circunstancias:
- Se ejecuta la recolección completa de elementos no utilizados.
- La ocupación de las regiones de antigüedad es superior a 691 MB después de la recolección.
Solicitar
Los desencadenadores del SLA se basan en OpenTelemetry e inician un perfil si se cumplen determinados criterios.
Cada configuración de desencadenador individual se forma de la siguiente manera:
Name
: un identificador único del desencadenador.Filter
: filtra las solicitudes de interés para el desencadenador.Aggregation
: calcula la proporción de solicitudes que infringieron un umbral determinado.Threshold
: valor mínimo (en milisegundos) en el que se determina que se produce una infracción de solicitud.Minimum samples
: el número mínimo de muestras que se deben recopilar para que la agregación genere datos; este valor permite evitar que se desencadenen tamaños de muestra pequeños.Window
: período de tiempo gradual (en milisegundos).
Threshold
: valor de umbral (porcentaje) aplicado a la salida de agregación. Si se supera este valor, se inicia un perfil.
Por ejemplo, el siguiente escenario desencadenaría un perfil si: más del 75 % de las solicitudes a un punto de conexión específico (/users/.*) tardan más de 30 ms en un período de 60 segundos, cuando se recopilaron al menos 100 muestras.
Instalación
Los pasos siguientes le guían a través de la habilitación del componente de generación de perfiles en el agente y la configuración de límites de recursos que desencadenan un perfil si se superan.
Configure los umbrales de recursos que hacen que se recopile un perfil:
Advertencia
El botón Trazas de perfilador en la parte inferior derecha no es compatible con Java.
Seleccione Desencadenadores
Configure los desencadenadores de CPU, memoria o solicitud necesarios (si están habilitados) y seleccione Aplicar.
Advertencia
Java Profiler no es compatible con el desencadenador "Muestreo". Si lo configura, no pasará nada.
Una vez completados estos pasos, el agente supervisará la utilización de recursos del proceso y desencadenará un perfil cuando se supere el umbral. Cuando un perfil se desencadena y se completa, se puede ver desde la instancia Application Insights dentro de la sección Rendimiento ->Generador de perfiles. Desde esa pantalla se puede descargar el perfil y, después de eso, el archivo de registros JFR se puede abrir y analizar en una herramienta de su elección, por ejemplo Oracle JDK Mission Control (JMC).
Configuración
La configuración de los parámetros de activación de Java Profiler, como los umbrales y los periodos de generación de perfiles, se establecen en la interfaz de usuario de Application Insights en Rendimiento>Generador de perfiles>Desencadenadores, como se describe en Instalación.
Además, muchos parámetros se pueden configurar mediante variables de entorno y el archivo de configuración applicationinsights.json
.
Configuración del contenido del perfil
Si quiere proporcionar una configuración de perfil personalizada, modifique memoryTriggeredSettings
y cpuTriggeredSettings
para proporcionar la ruta de acceso a un archivo .jfc
con la configuración necesaria.
Los perfiles se pueden generar o editar en la interfaz de usuario de JDK Mission Control (JMC) en el menú Window->Flight Recording Template Manager
y el control de las marcas individuales se encuentra en Edit->Advanced
, en esta interfaz de usuario.
Variables de entorno
APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED
: booleano, (valor predeterminado:true
)Habilita o deshabilita la función de creación de perfiles. De forma predeterminada, la característica está habilitada dentro del agente (desde el agente 3.4.9). Sin embargo, aunque esta característica estuviera habilitada en el agente, los perfiles no se recopilan a menos que se habiliten en el portal, tal y como se describe en Instalación.
Archivo de configuración
Configuración de ejemplo:
{
"preview": {
"profiler": {
"enabled": true,
"cpuTriggeredSettings": "profile-without-env-data",
"memoryTriggeredSettings": "profile-without-env-data",
"manualTriggeredSettings": "profile-without-env-data",
"enableRequestTriggering": true,
"periodicRecordingDurationSeconds": 60
}
}
}
memoryTriggeredSettings
: esta configuración se usa si se solicita un perfil de memoria.
Este valor puede ser uno de los siguientes:
profile-without-env-data
(valor predeterminado). Perfil con determinados eventos confidenciales deshabilitados. Consulte la sección Advertencia para obtener más información.profile
. Usa la configuraciónprofile.jfc
que se incluye con JFR.- Ruta de acceso a un archivo de configuración JFC personalizado en el sistema de archivos, por ejemplo,
/tmp/myconfig.jfc
.
cpuTriggeredSettings
: esta configuración se usa si se solicita un perfil de CPU.
Este valor puede ser uno de los siguientes:
profile-without-env-data
(valor predeterminado). Perfil con determinados eventos confidenciales deshabilitados. Consulte la sección Advertencia para obtener más información.profile
. Usa la configuración JFCprofile.jfc
que se incluye con JFR.- Ruta de acceso a un archivo de configuración JFC personalizado en el sistema de archivos, por ejemplo,
/tmp/myconfig.jfc
.
manualTriggeredSettings
: esta configuración se usa si se solicita un perfil manual.
Este valor puede ser uno de los siguientes:
profile-without-env-data
(valor predeterminado). Perfil con determinados eventos confidenciales deshabilitados. Consulte la sección Advertencia para obtener más información.profile
. Usa la configuración JFCprofile.jfc
que se incluye con JFR.- Ruta de acceso a un archivo de configuración JFC personalizado en el sistema de archivos, por ejemplo,
/tmp/myconfig.jfc
.
enableRequestTriggering
Si se debe desencadenar la generación de perfiles de JFR en función de la configuración de la solicitud.
Este valor puede ser uno de los siguientes:
true
La generación de perfiles se desencadena si se infringe un umbral de desencadenador de solicitud.false
(valor predeterminado). La configuración de la solicitud no desencadena la generación de perfiles.
periodicRecordingDurationSeconds
: duración de la grabación de la generación perfiles en segundos cuando se inicia una sesión de generación de perfiles mediante el botón Generar perfiles ahora. El valor predeterminado es 120
.
Pasos siguientes
- Para revisar las preguntas más frecuentes (P+F), consulte Preguntas más frecuentes sobre Java Profiler.