Amélioration #5703
ferméProblème empreinte mémoire du script initViewPrivileges.php
100%
La consommation mémoire excessive provient sûrement de la recherche qui récupère l'ensemble des documents
dans la cas d'une famille générique.
Il faut que la recherche travaille que sur les "only".
Ensuite si par hasard il y a quand même une famille qui contient énormément de documents, il faut découper la rechercher par morceaux.
Mettre un slice, et boucler tant qu'il reste des documents à traiter. Ainsi même si la famille a 100000 document (avec un slice de 1000) on fera 1000 fois la recherche et la mémoire restera alloué pour ces 1000 documents.
Description
Lors de la migration d'un Dynacase 3.1 en 3.2, lors du FDL_postmigr_3.2.0, le système se met à swapper et je remarque que le processus PHP qui exécute initViewPrivileges a une empreinte mémoire de 4 Go, et que cette empreinte augmente.
Je pense qu'il y a soit une fuite mémoire dans le script, ce qui pénalise le déroulement de la migration car lorsque le système se met à swapper, la durée de traitement pour l'exécution de cette opération devient énorme et imprévisible.
Mis à jour par Jérôme Augé il y a plus de 10 ans
L'empreinte mémoire semble être causée simplement par le chargement de la classe de chacune des familles : le script itère sur chaque familles et charge donc la classe associée avec un include_once().
Un contournement serait de lancer un sous-process PHP par famille afin de ne pas accumuler les classes des différentes familles.
Le sript `initViewPrivileges` pourrait alors récupérer la liste des familles à traiter et se relancer en ajoutant l'argument `--famid=xxx` pour ne traiter qu'une famille. Une fois le sous-process avec l'argument `--famid=XXX` terminé, sa mémoire sera désallouée.
SI l'option --famid=XXX est présente; ALORS
Traiter la famille XXX
SINON
POUR chaque famille FAMID; FAIRE
Lancer un sous-process "./wsh.php --api=initViewPrivileges --famid=${FAMID}"
FINPOUR
FINSI
Mis à jour par Marc Claverie il y a plus de 10 ans
- Tracker changé de Anomalie à Amélioration
- Assigné à mis à Éric Brison
- Version cible mis à 3.2.21
Mis à jour par Éric Brison il y a plus de 10 ans
- Statut changé de À analyser à Analysé
- Assigné à changé de Éric Brison à Jérôme Augé
- Solution proposée mis à jour (diff)
Mis à jour par Éric Brison il y a plus de 10 ans
- Statut changé de Assigné à Intégré
Appliqué par commit dynacase-core|commit:6daee71d2c9f565603df15cd2481d160b0cb229e.