2012-11-12 2 views
5

J'utilise ehcache avec de la terre cuite dans mon application. Mon temps de réponse a augmenté de 700 fois lorsque j'utilise ehcache avec de la terre cuite. Je pense que la terre cuite prend du temps pour mesurer la taille des objets qu'il me donner d'avertissement:IgnoreSizeOf annotation lors de l'utilisation de ehcache avec terre cuite

net.sf.ehcache.pool.sizeof.ObjectGraphWalker checkMaxDepth AVERTISSEMENT: La limite configurée de 1000 références d'objet a été atteint tandis que tente de calculer la taille du graphe d'objet. Graves Une dégradation des performances peut se produire si l'opération de dimensionnement se poursuit. Cela peut être évité en réglant le CacheManger ou Cache éléments maxDepthExceededBehavior à « abandonner » ou en ajoutant des points d'arrêt avec annotations @IgnoreSizeOf. Si la dégradation des performances n'est pas un problème à la limite configurée, augmentez la valeur limite à l'aide de l'attribut CacheManager ou Cache maxDepth. Pour plus d'informations, voir la documentation de configuration Ehcache.

Lorsque j'ai utilisé l'annotation @IgnoreSizeOf sur ma classe, le temps de réponse a été réduit. Ma question est l'utilisation de l'annotation @IgnoreSizeOf a des inconvénients. Pour ce qu'il est utilisé et comment il réduit le temps de réponse de mon application S'il vous plaît aider. Merci d'avance.

Répondre

7

Cette annotation est pas lié à terre cuite en cluster. Je suppose que vous avez posté cette autre question sur ce sujet. L'annotation @IgnoreSizeOf aura le sizeOfEngine, qui mesure l'empreinte mémoire des entrées de vos caches, ignore les instances des classes annotées (ou des paquets entiers) ou des sous-graphes (champs annotés) de vos entrées mises en cache.

Donc, si un objet graphique que vous cache a une « partagée » sous-graphe, vous auriez annoter le champ où ce graphique commence par l'annotation. Si vous ignorez tout alors rien sera la taille et le réglage maxBytesLocalHeap n'a pas sémantique (vous éventuellement de oome souffrir).

Vous devez comprendre les graphiques d'objet que vous la mise en cache afin d'utiliser l'annotation correctement. Voir http://ehcache.org/documentation/configuration/cache-size#built-in-sizing-computation-and-enforcement pour plus de détails. Maintenant, au problème de performance que vous voyez, vous pouvez tester avec et sans le paramètre maxBytesLocalHeap et avec et sans clustering pour essayer d'identifier votre problème. Mais je pense que vous pourriez être plus en mémoire cache que prévu, ce qui entraîne l'empreinte des grands hommes, ainsi que les frais généraux regroupement des données ...

+0

ya tends oome et c'est pourquoi j'ai mis maxBytesLocalHeap. En pensant que cela résoudrait mon problème d'OOME – user1147070

+0

C'est ce dont il s'agit vraiment ... Encore une fois, aucun impact sur l'utilisation de l'annotation, au contraire. Leur est cependant un impact perf (sur le put) pour mesurer le graphe d'objet ajouté au cache. Quelle est l'importance de l'impact, dépend probablement le plus de la taille du graphique ... Mais en général, ceux-ci ne sont pas trop gros, mais les entrées peuvent faire référence à un graphique "partagé". Cela devrait être ignoré lors du dimensionnement, en utilisant cette annotation. –

Questions connexes