etalab / transport-site

Rendre disponible, valoriser et améliorer les données transports
https://transport.data.gouv.fr
194 stars 30 forks source link

Reboot régulier du worker (depuis mises à jour techniques) #3435

Closed thbar closed 1 year ago

thbar commented 1 year ago

Je vais ajouter des éléments ici.

CleanShot 2023-09-01 at 10 31 50@2x CleanShot 2023-09-01 at 10 32 17@2x
thbar commented 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:

(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.

thbar commented 1 year ago

L'usage mémoire semble avoir baissé sur la moyenne, mais on voit des pics:

CleanShot 2023-09-01 at 10 45 19@2x
thbar commented 1 year ago

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.

CleanShot 2023-09-01 at 10 49 17@2x
thbar commented 1 year ago

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.

thbar commented 1 year ago

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.

thbar commented 1 year ago

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

thbar commented 1 year ago

Documentation qui va nous servir:

Je vais demander à AppSignal comment faire pour filtrer ce qui nous arrange sans exploser notre quota.

thbar commented 1 year ago

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.

thbar commented 1 year ago

J'ai contacté AppSignal pour récupérer des infos sur comment affiner la configuration.

thbar commented 1 year ago

Je vais étudier ce point en priorité cette semaine.

thbar commented 1 year ago

@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.

thbar commented 1 year ago

https://github.com/etalab/transport-site/blob/11d3a90535f2b386685e74432fd4fb910d00e55f/apps/transport/lib/jobs/resource_history_job.ex#L44

thbar commented 1 year ago

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.

thbar commented 1 year ago

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.

CleanShot 2023-09-04 at 19 15 26@2x
thbar commented 1 year ago

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:

CleanShot 2023-09-04 at 19 22 44@2x

Dommage, ça ne s'observe pas visuellement pour le coup, car sûrement trop rapide:

CleanShot 2023-09-04 at 19 25 07@2x
thbar commented 1 year ago

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.

thbar commented 1 year ago

Effectivement, voir:

Je vais remplacer ce ticket par un autre que je linkerai ici.

thbar commented 1 year ago

Remplacé par: