Thanos compact qui explose le CPU et la RAM

Posté par jean25 le 22/05/2024
RÉSOLU

jean25

Membre depuis le 04/04/2019

actif

Hello les cost killers ! on a un Thanos compact qui tourne et franchement il est en train de tuer nos serveurs de compactions. dès qu'il commence à bosser sur des vieux blocs (plusieurs mois) le cpu monte à 100% et la ram prend tout. on est sur la 0.29.0 de thanos. des idées pour optimiser ça ?

Commentaires

gautier-olivier

Membre depuis le 27/04/2024

rédacteur

Salut ! C'est classique ça. C'est quoi la taille moyenne de tes blocs au niveau raw data ? Et tu as combien de séries par block ?

david-camus

Membre depuis le 10/05/2024

actif

T'as regardé tes options de compaction comme `compaction.concurrency` et `compaction.retention.resolution-raw` ? Des fois baisser la concu aide un peu.

jean25

Membre depuis le 04/04/2019

actif

Les blocs raw sont énormes, genre 2-3Go par bloc pour des périodes d'une journée. Beaucoup de séries actives. `compaction.concurrency` est à 2. `retention.resolution-raw` est à 2 ans.

timothee05

Membre depuis le 14/12/2020

actif

question bête mais `compaction.consistency-delay` est à combien ? si c'est trop bas ça peut tenter de compacter des blocs encore en écriture ou pas complètement uploadés.

gautier-olivier

Membre depuis le 27/04/2024

rédacteur

Pour 2-3Go par bloc et autant de séries, 2 de concurrency c'est ptete déjà trop pour des machines modestes. Tu pourrais essayer de le mettre à 1, ou de passer sur des instances plus grosses avec plus de CPU et RAM.

david-camus

Membre depuis le 10/05/2024

actif

La downsampling est activée ? Si oui, à quelles résolutions ? Et est-ce que les problèmes sont plus sur le raw ou sur les résolutions downsamplées ?

jean25

Membre depuis le 04/04/2019

actif

Oui downsampling activée pour 5m et 1h. Le problème est clairement sur le raw, quand il aggrège des blocs d'une journée en blocs d'une semaine/mois. `consistency-delay` est à 30m, la valeur par défaut.

luce76

Membre depuis le 13/06/2020

actif

vérifie si tu n'as pas des blocs corrompus dans ton bucket s3. `thanos tools bucket verify` peut te donner des indices. un bloc corrompu peut faire planter le compacteur ou le faire ramer indéfiniment.

jean25

Membre depuis le 04/04/2019

actif

J'ai lancé un `bucket verify` hier, rien trouvé. Tout est clean côté S3. Les logs du compacteur montrent juste qu'il bosse dur mais il met des heures pour un seul bloc.

timothee05

Membre depuis le 14/12/2020

actif

C'est ptete le nombre de fichiers qu'il doit manipuler. Essaye d'ajuster `compaction.block-sync-concurrency`. Ça gère le nombre de blocs qui sont téléchargés/uploadés simultanément de S3.

gautier-olivier

Membre depuis le 27/04/2024

rédacteur

Autre approche : as-tu pensé à séparer les compacteurs ? Un pour le raw, qui tourne sur une grosse machine dédiée, et un ou plusieurs pour les résolutions downsamplées. Ça isole le problème.

david-camus

Membre depuis le 10/05/2024

actif

Est-ce que ton S3 bucket n'est pas throttlé ? Regarde les métriques S3 Request Metrics pour voir si tu as des erreurs ou des latences élevées sur les GET/PUT.

jean25

Membre depuis le 04/04/2019

actif

S3 est niquel on a pas de throttling. La latence est bonne. Je vais essayer de baisser `block-sync-concurrency` et `compaction.concurrency` à 1 pour voir.

luce76

Membre depuis le 13/06/2020

actif

Si tu as beaucoup de séries, ça peut aussi venir de la cardinalité élevée de certaines métriques. Le compacteur doit manipuler beaucoup plus de données. Une purge de métriques inutiles ou avec trop de labels pourrait aider.

jean25

Membre depuis le 04/04/2019

actif

On a déjà fait le ménage sur la cardinalité en amont. En baissant la concu et en donnant plus de RAM/CPU au compacteur ça aide un peu mais c'est pas encore l'idéal. Il reste quand même très gourmand.

gautier-olivier

Membre depuis le 27/04/2024

rédacteur

Pour les très vieux blocs tu pourrais même avoir une job de compacteur qui tourne moins souvent, genre une fois par mois, sur une instance éphémère super beefy juste pour ça. C'est du FinOps mais ça aide.

jean25

Membre depuis le 04/04/2019

actif

L'idée du job éphémère est pas mal pour les vieux trucs. Avec la baisse de concu et une plus grosse machine ça stabilise les choses. Le coût est plus élevé mais au moins ça finit la compaction. Thx à tous pour les idées !

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire