etalab / annuaire-entreprises-sirene-api

MIT License
15 stars 11 forks source link

Initialisation de la db anormalement longue (> 24h) #6

Open svolle opened 2 years ago

svolle commented 2 years ago

Notre expérience de l'initialisation de la DB (exécution de l'ensemble des scripts définis dans db/init) montre un temps d'exécution largement supérieur aux 35 minutes indiquées dans la documentation, et serait plutôt de l'ordre de 24~48h.

Le container docker s'exécute sur un serveur équipé d'un CPU Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz et de 32Go de RAM. La base de données est hébergée sur un disque magnétique (et non un SSD).

La work_mem de postgres est de 16Go et wal_max_size de 30Go comme défini par les scripts de configuration.

Que pourrait expliquer ce temps d'initialisation extrêmement long ? Autre question, pourquoi est-il nécessaire de définir un shared memory de 60GB pour le docker postgres ?

Merci par avance.

svolle commented 2 years ago

J'ai tenté de modifier un certain nombre de paramètres de postgres dans le but d'améliorer les performances en écriture lors des updates (checkpoint_timeout, timeout wal, désactivation de l'autovacuum sur la table siren, ...) mais cela ne semble pas avoir impacté la durée des updates qui prennent plusieurs heures et rendent la solution peu exploitable.

J'ai également tenté d'installer la solution sur une autre machine équipée d'un SSD avec un résultat équivalent.