Ajout de points de métriques de mesure du cache
Vous pouvez ajouter des points de mesure pour extraire les métriques qui ne sont pas évaluées par défaut avec l'outil de mesure des performances. Pour mesurer et analyser l'impact potentiel du cache sur un processus, vous devez extraire les métriques à analyser.
Pour extraire de nouvelles métriques, vous devez mettre en œuvre une opération qui crée des points de mesure et extrait et enregistre les métriques pour ces points. A titre d'exemple, vous pouvez ajouter des points de mesure pour extraire des métriques afin d'analyser l'impact de cache de vos appels sortants vers une application intégrée à HCL Commerce.
Le code suivant est un exemple de collecte d'une métrique pour une utilisation dans la mesure du cache.
/**
* 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);
}
}- L'ID unique de demande et l'ID unique de parent sont automatiquement calculés avec la méthode startOperation et stopOperation en utilisant une variable locale d'unité d'exécution. Ce calcul automatique signifie que les ID d'opération doivent être propagés à travers les unités d'exécution si une opération crée plusieurs unités d'exécution.
- L'heure de début, l'heure de fin et la durée de la demande sont automatiquement calculées avec la méthode startOperation et stopOperation, avec une précision d'une nanoseconde comme le prévoit la machine virtuelle Java (JVM).
- L'infrastructure du consignateur est utilisée pour déterminer si vous devez mesurer une demande ou non, afin de minimiser l'impact sur le système lorsque les mesures ne sont pas nécessaires. La recommandation est d'utiliser les trois niveaux suivants
Level.INFOet ultérieure - aucune mesure n'est effectuée.Level.FINE- les métriques de requête sont évaluées, mais pas la taille de la réponse.Level.FINER- les métriques de requête sont évaluées, y compris la taille de la réponse.
- La raison pour laquelle plusieurs niveaux de consignateurs sont utilisés est de permettre la mesure des métriques dans un système de production et de minimiser l'utilisation des ressources par le processus de mesure.