Closed thbar closed 1 year ago
AppSignal n'est pas activé sur le worker pour des questions de quotas (coût etc).
J'hésite à l'activer là car je vais passer offline pendant quelques temps ; peut-être temporiser cela à lundi.
Manipulation pour faire ça:
prod-worker
_CUSTOM_APPSIGNAL_PUSH_API_KEY
en CUSTOM_APPSIGNAL_PUSH_API_KEY
(mais il faudra remettre en place après, et suivre le quota).
Idéalement ça prouve que ça serait bien d'arriver à avoir un suivi "correct au niveau quotas" là dedans.
L'usage mémoire semble avoir baissé sur la moyenne, mais on voit des pics:
Curieux, on voit rapporté une "baisse" de la mémoire avant les crashs. Mais c'est peut-être une fausse info (host non réactif ou autre), je ne sais pas.
On va laisser comme ça pour l'instant, je revisiterai lundi sauf gros souci dans le week-end.
On a noté avec @AntoineAugusti les idées suivantes:
Voilà des idées un peu en vrac pour le moment, à suivre.
Il est à noter également que ces reboots pourraient être totalement une coincidence et sans lien avec la mise à jour Elixir + dépendances (#3429), on va voir si ça se reproduit plus longtemps aujourd'hui ou pas.
Mais sans certitude, on considère que ce n'est pas une coincidence par défaut.
Liens utiles:
Et en particulier:
idle time is recorded to show how busy or not busy the connection pool is. During connection pool IO overload the idle time will be as close to 0 as it can be, not counting message passing overhead, because then the connections are always in use by processes running transactions/queries
Documentation qui va nous servir:
Je vais demander à AppSignal comment faire pour filtrer ce qui nous arrange sans exploser notre quota.
On pourrait brancher temporairement (ou définitivement) l'instrumentation Ecto:
Cela dit il faut voir combien de métriques différents cela envoie, pour mesurer l'impact sur la facture.
J'ai contacté AppSignal pour récupérer des infos sur comment affiner la configuration.
Je vais étudier ce point en priorité cette semaine.
@AntoineAugusti a creusé et voit que le job suivant consomme de la RAM et génère un OOM:
Transport.Jobs.ResourceHistoryJob.new(%{
"resource_id" => 65185,
"id" => Ecto.UUID.generate()
}) |> Oban.insert()
C'est très cool car ça va m'aider à vérifier que je détecte le souci avec l'outillage.
Dans le sens d'activer AppSignal sur tous les hosts, je fais:
Et parallèlement j'ai décommenté la variable _CUSTOM_APPSIGNAL_PUSH_API_KEY
en CUSTOM_APPSIGNAL_PUSH_API_KEY
et redémarré, pour voir si on observe + de choses.
En suivant la RAM et en lançant le job décrit plus haut (https://github.com/etalab/transport-site/issues/3435#issuecomment-1704834969), j'ai vu la RAM monter, mais pas assez haut !
Toutefois ça s'observe à présent très bien.
J'en ai lancé 3 d'un coup 😉 et là ça génère bien un OOM, qu'on retrouve via le drain, c'est top:
Dommage, ça ne s'observe pas visuellement pour le coup, car sûrement trop rapide:
Déjà gros avantage -> on pourra retrouver les OOM dans les logs facilement, et du coup mettre au point de l'outillage et des vérifications plus facilement aussi.
Effectivement, voir:
Je vais remplacer ce ticket par un autre que je linkerai ici.
Remplacé par:
Je vais ajouter des éléments ici.