La VM (machine virtuelle) Ruby utilise le ramasse-miettes (Garbage Collection, GC) pour éviter d’épuiser la mémoire du processus. Le ramasse-miettes aide à éviter que votre application ne souffre de pannes de mémoire en cas de manque de mémoire.
Ce processus de nettoyage de la mémoire inutilisée dans les applications Ruby peut se produire à tout moment. Pour obtenir plus d’informations à ce sujet, vous pouvez utiliser le profileur de ramasse-miettes de Ruby.
Profileur
Nous ne recommandons pas d’activer le profileur de ramasse-miettes dans les
environnements de production, du moins pas pour de longues périodes. La
surcharge supplémentaire du profileur peut avoir un impact négatif sur les
performances de votre application.
Lorsque le profileur de ramasse-miettes Ruby est activé, AppSignal collecte automatiquement des métriques pour son magic dashboard Ruby VM. Le graphique « Temps GC » montrera combien de temps la VM Ruby a mis pour nettoyer la mémoire inutilisée entre les mesures. Ce graphique présentera des pics s’il doit soudainement traiter beaucoup plus de mémoire, par exemple après une tâche ou une requête à forte consommation de mémoire. Le profileur GC est désactivé par défaut, donc aucune métrique n’est rapportée dans ce graphique.
Pour activer le profileur GC, ajoutez le code ci-dessous à votre application. Le profileur peut être activé à tout moment dans l’application, par exemple au démarrage ou en prévision d’opérations gourmandes en mémoire.
Une fois le profileur GC activé, le graphique « Temps GC » commencera à afficher des métriques après au moins deux minutes. Cette métrique est rapportée par notre système de sondes minute par minute et de nouvelles mesures sont effectuées chaque minute.
Pour activer temporairement le profileur GC, assurez-vous de désactiver le profileur par la suite.
GC::Profiler.enable
# Do memory intensive operation
GC::Profiler.disable
Pour que la gem Ruby signale une durée supérieure à zéro pour le temps de ramasse-miettes, le profileur doit être activé pendant plus de deux minutes. Il s’agit du temps initial nécessaire à la gem Ruby pour mesurer le temps de ramasse-miettes. Nous recommandons d’activer le profilage GC pendant plus longtemps que le minimum de deux minutes afin de disposer de mesures complètes nécessaires à la comparaison et au tracé.