Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

decp.json to XML eats 4GB+ RAM. Too much for CircleCI free edition. #42

Closed
ColinMaudry opened this issue Jun 12, 2020 · 15 comments
Closed
Assignees
Labels
bug Something isn't working

Comments

@ColinMaudry
Copy link

Depuis la release de 1.14.0 et l'allongement du temps de traitement sans log à 4h, CircleCI rapporte l'erreur suivante :

## Conversion du JSON agrégé en XML...

-:1: parser error : Document is empty
@ColinMaudry ColinMaudry added the bug Something isn't working label Jun 12, 2020
@ColinMaudry ColinMaudry self-assigned this Jun 12, 2020
@ColinMaudry
Copy link
Author

ColinMaudry commented Jun 18, 2020

J'ai lancé le job Circle CI en local en utilisant CircleCI CLI, et le job s'est exécuté sans soucis. cc @strainel

J'ai publié le résultat sur le dataset.

@ColinMaudry
Copy link
Author

L'erreur rapportée est renvoyée si le fichier passé au script scripts/jsonDECP2xmlDECP.sh n'existe pas.

Donc ce que semble indiquer le log, c'est qu'au moment d'exécuter ce script, le fichier json/decp.json n'existe pas.

@ColinMaudry
Copy link
Author

C'est cette commande qui échoue : https://github.com/139bercy/decp-rama/blob/master/process.sh#L85

Mais bizarrement, la précédente, qui utilise aussi json/decp.json, s'exécute sans problème.

@ColinMaudry
Copy link
Author

ColinMaudry commented Jun 18, 2020

Le script précédent celui qui échoue, scripts/get_new_data.sh, ne contient il me semble aucune commande susceptible de supprimer json/decp.json (la variable $newFile).

@ColinMaudry
Copy link
Author

J'ai configuré un cron sur mon serveur personnel pour effectuer le traitement quotidien.

@strainel
Copy link

merci @ColinMaudry ; du coup quelle est la cause racine du dysfonctionnement ?

@ColinMaudry
Copy link
Author

@strainel C'est encore un mystère : ça marche en local, mais pas en ligne. Pour l'instant, le principal suspect est notre dépassement du crédit Circle, mais c'était la même chose chez Etalab, sans que ce soit un problème.

@ColinMaudry
Copy link
Author

ColinMaudry commented Jun 19, 2020

Prochaines étapes (en parallèle):

  • demande de support auprès de CircleCI
  • test de GIthub Actions en remplaçant potentiel

@strainel
Copy link

j'ai demandé à nos collègues des marchés ; pour le moment circle ci c'est pas dans l'offre...
je crois que la demande de support s'impose pour diagnostiquer le pb.

@ColinMaudry
Copy link
Author

J'ai exécuté le workflow CircleCI avec accès SSH, j'ai pu observer des choses intéressantes :

  • le script de conversion du JSON vers XML s'exécute, mais échoue pendant son exécution : le fichier JSON source est donc bien présent au moment de l'exécution
  • quelques secondes avant l'erreur, le console SSH est devenu très lente. Je suspecte un problème de ressources mémoire ou CPU. Ni top ni free n'étaient installés ou installables avec APT pour pouvoir le vérifier. La quantité de données seraient-elles trop importante pour 4 GB RAM ?

@ColinMaudry
Copy link
Author

ColinMaudry commented Jun 19, 2020

C'est effectivement le problème : lorsque j'exécute ce script en local, le script python json2xml.py occupe au maximum un peu plus de 25% de la mémoire de mon ordinateur, qui dispose de 16 GB RAM. Soit un peu plus de 4 GB.

Solutions possibles :

  1. remplacer json2xml.py par une solution "streamée" qui charge moins de données en mémoire
  2. utiliser une plateforme qui dispose de plus de mémoire

@ColinMaudry
Copy link
Author

J'imagine assez bien la solution numéro un : plutôt que de convertir les 135 Mo de JSON d'un bloc, le script pourrait boucler individuellement sur chacun des 135 000 marché et les convertir en XML. Je teste.

@strainel
Copy link

splitter automatiquement en bloc de 30 000 marchés puis reconcaténer ?

@ColinMaudry ColinMaudry changed the title Le traitement est en erreur "-:1: parser error : Document is empty" decp.json to XML eats more than 4GB RAM. Too much for CircleCI free edition. Jun 24, 2020
@ColinMaudry ColinMaudry changed the title decp.json to XML eats more than 4GB RAM. Too much for CircleCI free edition. decp.json to XML eats 4GB+ RAM. Too much for CircleCI free edition. Jun 24, 2020
ColinMaudry added a commit that referenced this issue Jun 24, 2020
Conversion JSON > XML par blocs pour réduire la consommation de mémoire (#42)
@ColinMaudry
Copy link
Author

ColinMaudry commented Jun 24, 2020

Build réussi pour la branche develop, demain ça devrait être bon sur master.

Le script qui change tout : c257bcb

@ColinMaudry
Copy link
Author

Fixed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants