Les expulseurs

Les expulseurs retirent des données de la grille de données. Vous pouvez définir un expulseur Time ou un expulseur par défaut. Comme des expulseurs sont associés à des mappes de sauvegarde, utilisez l'interface BackingMap pour spécifier l'expulseur enfichable.

Types d'expulseur

Un expulseur basé sur la durée de vie est créé par défaut avec chaque mappe de sauvegarde dynamique. L'expulseur supprime les entrées en se basant sur un concept de durée de vie.
Aucun

Spécifie que les entrées n'expirent jamais et par conséquent ne sont jamais supprimées de la mappe.

Heure de création

Spécifie que les entrées sont expulsées en fonction de la date et de l'heure auxquelles elles ont été créées.

Si vous utilisez l'attribut Heure de création CREATION_TIME ttlType, l'expulseur expulsera une entrée lorsqu'elle aura atteint la durée de vie spécifiée par sa valeur TTL l'attribut TimeToLive, qui est définie en millisecondes dans la configuration de l'application. Si vous paramétrez TTL l'attribut TimeToLive sur la valeur de 10 secondes, l'entrée est automatiquement expulsée dix secondes après son insertion.

Il est important de faire attention lors de la définition de cette valeur pour le type d'expulseur Heure de création CREATION_TIME ttlType. Cet expulseur s'avère utile dans les cas de quantités raisonnablement élevées d'ajouts au cache utilisés pendant un temps donné. Avec cette stratégie, tout ce qui est créé est supprimé à la fin de la durée définie.

Le type d'expulseur Heure de création CREATION_TIME ttlType est utile dans des scénarios où l'on doit actualiser des cours boursiers toutes les 20 minutes, voire moins. Supposons qu'une application Web récupère les cours de la bourse, sans que l'obtention des cours les plus récents soit cruciale. Dans ce cas, les cours sont mis en cache dans une grilleun ObjectGrid pendant 20 minutes. Après 20 minutes, les entrées de la mappe ObjectGrid de la grille expirent et sont expulsées. Toutes les vingt minutes environ, la grillemappe ObjectGrid utilise le plug-in Loader pour actualise ses données avec les données de la base de données. Celle-ci est actualisée toutes les 20 minutes avec les cours les plus récents.

Heure du dernier accès

Spécifie que les entrées sont expulsées en fonction de l'heure de leur dernier accès, qu'elles aient été lues ou actualisées.

Heure de la dernière modification

Spécifie que les entrées sont expulsées en fonction de l'heure de leur dernière modification.

Si vous utilisez le type d'expulseur Heure du dernier accès LAST_ACCESS_TIME ou Heure de la dernière modification LAST_UPDATE_TIME ttlType, paramétrez la valeur TTL TimeToLive sur une valeur plus faible que si vous utilisiez le type d'expulseur Heure de création CREATION_TIME ttlType, car les entrées l'attribut TimeToLive sont réinitialisées lors de chaque accès. En d'autres termes, si TTLl'attribut TimeToLive est égal à 15 et qu'une entrée a existé pendant 14 secondes mais qu'on y accède, elle n'expire pas de nouveau pendant les 15 prochaines secondes. Si vous paramétrez TTL TimeToLive sur une valeur relativement élevée, il est possible que de nombreuses entrées ne soient expulsées. Cependant, si vous le paramétrez sur une valeur telle que 15 secondes, les entrées avec peu d'accès risquent d'être supprimées.

Le type d'expulseur Heure du dernier accès LAST_ACCESS_TIME ou Heure de la dernière mise à jour LAST_UPDATE_TIME ttlType est utile dans des scénarios où l'on doit conserver les données de session d'un client, à l'aide d'une mappe de grille ObjectGrid. Les données de session doivent être détruites si le client ne les utilise pas pendant un certain laps de temps. Par exemple, après 30 minutes d'inactivité du client. Dans ce cas, l'utilisation du type d'expulseur Heure du dernier accès LAST_ACCESS_TIME ou Heure de la dernière mise à jour LAST_UPDATE_TIME avec la valeur TTLl'attribut TimeToLive paramétrée sur 30 minutes convient tout à fait à cette application.

Vous pouvez également écrire vos propres expulseurs : pour plus d'informations, voir Ecriture d'un expulseur personnalisé.

Expulseur enfichable

L'expulseur TTL par défaut utilise une stratégie d'expulsion basée sur le temps, et le nombre d'entrées dans la mappe de sauvegarde n'a pas d'effet sur le délai d'expiration d'une entrée. Au lieu de vous baser sur le temps, vous pouvez connecter un expulseur optionnel pour expulser des entrées en fonction du nombre d'entrées existantes.

Les expulseurs optionnels fournissent des algorithmes communément utilisés pour décider quelles entrées expulser dès qu'une mappe de sauvegarde dépasse une certaine taille.
  • L'expulseur LRUEvictor utilise un algorithme déterminant les entrées les moins récemment utilisées (LRU).
  • L'expulseur LFUEvictor utilise un algorithme déterminant les entrées les moins fréquemment utilisées(LFU).

La mappe de sauvegarde informe un expulseur quand des entrées sont créées, modifiées ou supprimées d'une transaction. La mappe de sauvegarde suit ces entrées et choisit quand expulser de l'instance BackingMap une ou plusieurs de ces entrées.

Une instance BackingMap ne dispose pas d'informations de configuration pour une taille maximale. A la place, les propriétés d'expulseur sont définies pour contrôler le comportement de ce dernier. Le LRUEvictor et le LFUEvictor ont une taille maximale utilisée pour déclencher l'expulsion des entrées quand une certaine taille est dépassée. Comme l'expulseur TTL, il est possible que les expulseurs LRU et LFU n'expulsent pas immédiatement une entrée quand le nombre maximal d'entrées est atteint, pour minimiser l'impact sur les performances.

Si l'algorithme d'expulsion LRU ou LFU se révèle inadéquat pour une application particulière, vous pouvez écrire vos propres expulseurs pour créer votre stratégie d'expulsion.

Expulsion basée sur la mémoire

Important : L'expulsion basée sur la mémoire est prise en charge uniquement par Java Platform, Enterprise Edition Version 5 ou ultérieure.

Tous les expulseurs pré-intégrés prennent en charge l'expulsion basée sur la mémoire, qui peut être activée sur l'interface BackingMap en définissant l'attribut evictionTriggers sur MEMORY_USAGE_THRESHOLD. Pour plus d'informations sur la définition de l'attribut evictionTriggers dans BackingMap, voir Interface BackingMap et Fichier XML du descripteur d'ObjectGrid.

L'expulsion basée sur la mémoire repose sur un seuil d'utilisation d'un segment de mémoire. Quand cette expulsion est activée dans la mappe de sauvegarde et que cette dernière dispose d'un expulseur pré-intégré, le seuil d'utilisation est défini en un pourcentage par défaut de la mémoire totale, si le seuil n'a pas été défini auparavant.

Lors de l'utilisation de l'expulsion basée sur la mémoire, vous devez configurer le seuil de récupération de place sur la même valeur que l'utilisation du segment de mémoire cible. Par exemple, si le seuil de l'expulsion basée sur la mémoire est à 50 % et que le seuil de récupération de place est à la valeur par défaut de 70 %, alors l'utilisation du segment de mémoire peut aller jusqu'à 70 %. Cette augmentation de l'utilisation du segment de mémoire se produit car l'expulsion basée sur la mémoire n'est déclenchée qu'après un cycle de récupération de place.

Pour modifier le pourcentage du seuil d'utilisation, définissez la propriété memoryThresholdPercentage dans les fichiers de propriétés de conteneur et de serveur pour les processus de serveur eXtreme Scale. Pour définir le seuil d'utilisation cible dans un processus client, vous pouvez utiliser MemoryPoolMXBean.

L'expulsion basée sur la mémoire utilisée par WebSphere eXtreme Scale est sensible au comportement de l'algorithme en cours d'utilisation. Le meilleur algorithme pour l'expulsion basée sur la mémoire est le collecteur de débit par défaut d'IBM®. Les algorithmes de génération de récupération de place peuvent avoir des comportements indésirables et il est déconseillé de les utiliser avec l'expulsion basée sur la mémoire.

Pour changer le pourcentage du seuil d'utilisation, définissez la propriété memoryThresholdPercentage sur les fichiers de propriété de conteneur et de serveur pour les processus serveur eXtreme Scale.

Si pendant l'exécution, l'utilisation de la mémoire dépasse le seuil cible, les expulseurs basés sur la mémoire commencent à expulser des entrées et essaient de garder l'utilisation de la mémoire sous le seuil d'utilisation cible. Cependant, il n'existe aucune garantie que la vitesse d'expulsion soit assez grande pour éviter une erreur de dépassement de mémoire si l'exécution du système continue à consommer rapidement de la mémoire.