Pêche à l'information sur des problèmes de mémoire

Request description

Bonjour,
Je vais un peu à la pêche aux infos concernant un OOM subi aujourd’hui.
Nous avons pu tracer la séquence au travers de notre outil de monitoring Dynatrace mais nous sommes incapables de remonter malheureusement jusqu’au process fonctionnel incriminé.


Un enchainement de méthodes internes se détache néanmoins dans le suivi des objets “survivors” en mémoire. Les objets ayant survécu à plusieurs passages de GC.

Il s’agit de
dyna_mla-api_memory-chart_survivors_6_2023-02-24

Avez vous de votre côté une idée de ce qui appelle ces méthodes:

CacheInfo.calculateSizes
SizeTool.getMetrics
SizeTool.getObjectSize
SizeTool.sizeOf

ça semble avoir un rapport avec le cache.

Merci du support.

cdt,
Thierry
----description of the request----

Steps to reproduce

This request concerns an up-to-date Simplicité instance
and these are the steps to reproduce it:

Technical information

Instance /health
Platform]
Status=OK
Version=5.1.54
BuiltOn=2022-10-31 15:49
Git=5.1/06cc2793ebaaa50ddf3f3dee2251b397d7bdc09b
Encoding=UTF-8
EndpointIP=10.144.23.116
EndpointURL=http://mla-api-966f7f4f8-857s4:8080
TimeZone=Europe/Paris
SystemDate=2023-02-24 17:40:54

Simplicité logs
---paste the content of the **relevant** server-side logs---
Browser logs
---paste content of the **relevant** browser-side logs---
Other relevant information

----E.g. type of deployment, browser vendor and version, etc.----

La méthode CacheInfo.calculateSizes est une methode d’action de l’objet système CacheInfo:

On voit plus haut que l’appel de l’action s’est fait via un appel d’API standard, @Francois est-ce que c’est la page de monitoring qui fait cet appel ?

1 Like

David,
quand tu parles d’appel API Standard, qu’est ce que tu veux dire par là?

cdt

Le monitoring n’utilise pas cette méthode, il affiche directement la taille du heap global.

Ce calculateSize est appelé via le menu Operation/Cache info, en cliquant sur le bouton “calculer” (cf le invokeAction de la stack via JSONServet). Cet objet liste les objets en mémoire et en calcule la taille approximative (par sérialisation en bytes).

Il y a donc quelqu’un ou un process qui a utilisé cet objet et demandé le calcul pour voir j’imagine quel objet “déborde” en mémoire. Mais bon visiblement l’objet n’est plus serialisable ou cela empire la taille en mémoire…

Il n’existe pas de méthode Java efficace pour mesurer la taille d’un objet en mémoire. Il faudrait faire des heaps dump plutôt que de passer par le Cache info qui reste peu fiable.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.