Adición de puntos de métrica de medida de memoria caché

Puede añadir puntos de medida para recuperar métricas que no se han medido de forma predeterminada con la herramienta Medición del rendimiento. Para poder medir y analizar el impacto potencial en la memoria caché para un proceso, debe recuperar las métricas que se deben analizar.

Para recuperar nuevas métricas, debe implementar una operación que cree puntos de medida y recupere y anote las métricas para estos puntos. Por ejemplo, puede añadir puntos de medida para recuperar métricas con el fin de analizar el impacto de memoria caché de las llamadas de salida en una aplicación integrada con HCL Commerce.

El siguiente código muestra un ejemplo de cómo recuperar una métrica para utilizarla en la medición de la memoria caché.
/**
* Perform an operation and capture the metrics required for cache potential
* analysis.
* 
* This implementation uses a standard Java Logger.
*/

private static final Level MEASURE_RESULT_SIZE_LEVEL = Level.FINER;
private static final Logger LOGGER = Logger.getLogger(SamplePerformanceLoggingFilter.class.getName());
private static final LogMetricGatherer LOG_GATHERER = new LogMetricGatherer(LOGGER);

@SuppressWarnings("null")
public void performOperationUsingLogger() {
  OperationMetric metric = null;
  
  // only log cache metrics if we log them to minimize overhead
  // if the metrics aren't actively used.
  boolean logOperationMetric = LOG_GATHERER.isLoggable();
  if (logOperationMetric) {
    metric = new OperationMetric();
    String operationName = "performOperation";
    boolean isOperationCacheEnabled = true;
    
    // all the parameters name-value pairs, converted to a string
    // format.
    String[] keyValuePairs = new String[] { "parameter1", "value1",
    "parameter2", "value2" };
    metric.startOperation(operationName, isOperationCacheEnabled,
    keyValuePairs);
  }
  
  // run the operation
  
  if (logOperationMetric) {
    // use the logger level to determine if we should perform
    // an expensive size measurement.
    boolean logSize = LOG_GATHERER.getLogger().isLoggable(
    MEASURE_RESULT_SIZE_LEVEL);
    int resultSize = 1;
    if (logSize) {
      // perform a more expensive result size measurement
    }
    boolean isResultFetchedFromCache = false;
    metric.stopOperation(resultSize, isResultFetchedFromCache);
    
    LOG_GATHERER.gatherMetric(metric);
  }
}
  • El ID exclusivo de solicitud y el ID exclusivo padre se calculan automáticamente con el método startOperation y stopOperation utilizando una variable local de hebras. Este cálculo automático significa que esos ID de operación deben propagarse a través de hebras si una operación crea varias hebras.
  • La hora de inicio, la hora de finalización y la duración de la solicitud se calculan automáticamente con el método startOperation y stopOperation utilizando una precisión de nanosegundos tal como proporciona la JVM.
  • La infraestructura del registrador se utiliza para determinar si debe medir una solicitud o no, para minimizar el impacto en el sistema cuando las mediciones no son necesarias. La recomendación es utilizar los tres niveles siguientes
    • Level.INFO y superior: no se lleva a cabo ninguna medición.
    • Level.FINE : se miden las métricas de solicitud, pero no el tiempo de respuesta.
    • Level.FINER : se miden las métricas de solicitud, incluido el tamaño de respuesta.
  • La razón por la que se utilizan varios niveles de registros es permitir que se lleve a cabo la medición de métricas en un sistema de producción y minimizar el uso de recursos del proceso de medición.