n7consulting / Incipio

ERP / CRM for Junior-Entreprises.
http://jeyser-crm.n7consulting.fr
GNU Affero General Public License v3.0
42 stars 17 forks source link

Bug Memory size allowed #304

Closed alex3475me closed 5 years ago

alex3475me commented 5 years ago

Bonjour, nous sommes actuellement en train de dev Jeyser au sein de notre Junior (MOMA Junior Conseil). Après quelques mois d'utilisation normal du CRM, il est apparu un bug dans le suivi de mission, dès que qu'on clique sur « Voir les études ». Il y a un message d'erreur de ce type : « Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 67108872 bytes) in /app/src/Mgate/SuiviBundle/Controller/EtudeController.php on line 65 »

J'ai trouvé ce document (qui se trouve dans sur un autre chemin : /var/www/Incipio/vendor/sensio/framework-extra-bundle/SensioFrameworkExtraBundle.php) J'ai fouillé le fichier et impossible de trouver une information en lien avec un problème de mémoire allouée... Que devons-nous faire ? Merci beaucoup par avance !

theofidry commented 5 years ago

Salut @alexis34pillias,

Ma première suggestion serait de vérifier la limite mémoire autorisée pour un process PHP memory_limit (attention à bien regarder la configuration pour le server web et non pas la console). Par défaut c'est 128M, ce qui est en réalitée très peu. Vous pouvez aisément monter jusqu'à 512M voir plus (je recommende de rester en deçà de 2G) si votre serveur peut tenir la charge.

Il se peut que ce soit aussi liée à un chargement d'un fichier en mémoire mais dans le cas là la solution dépendra du cas présenté.

alex3475me commented 5 years ago

Salut @theofidry Merci beaucoup pour ton aide et ta réactivité ! Quelle est la démarche à suivre concrètement ? J'atteins comment la configuration du serveur web ?

Merci beaucoup !

Stoakes commented 5 years ago

Salut,

La solution pour augmenter la mémoire utilisable par votre serveur est de modifier /var/www/Incipio/docker/php/php.ini et d'ajouter la ligne suivante memory_limit = 256M à la fin du fichier.

Il te faudra ensuite reconstruire l'image web et la relancer:

docker-compose build web
docker-compose up -d
docker-compose exec web composer clear-cache-prod
docker-compose restart web

Il faudra probablement annuler cette modification avant votre prochaine mise à jour (via la commande `git checkout -- docker/php/php.ini).

Mais plus généralement, cette erreur ne devrait pas arriver. Quelle est votre version de Jeyser ? Avez vous un grand nombre d'études dans le CRM ? Avez vous fait des modifications sur le code de base ?

theofidry commented 5 years ago

@Stoakes 128M est très bas... À moins que vous ayez vraiment peaufiné niveau consommations de resources où que le server est très limité en resources il ne faut pas hésiter à pousser un peu.

Stoakes commented 5 years ago

128M, c'est la limite par requête HTTP, pas pour l'ensemble du serveur; du coup ça me semble largement suffisant.

L'installation N7 Consulting tourne avec ça depuis environ 4 ans, et je n'ai jamais vu/on ne m'a jamais remonté un problème similaire. Je pense qu'il y a un problème plus profond, une boucle infinie, un chargement récursif ou quelque chose de la sorte.

theofidry commented 5 years ago

128M, c'est la limite par requête, pas pour l'ensemble du serveur.

Yes I know :)

Fair enough, ça fait longtemps que je n'ai pas eu une app tournant avec aussi peu mais c'est peut être juste que j'ai plus de data :)

alex3475me commented 5 years ago

@Stoakes, ça marche ! J'ai réussi à augmenter la mémoire sur le serveur. Nous avons la version 2.8.1, pas bcp d'études, et je ne pense pas que l'on ai touché au code de la base... Cependant, je n'arrive pas à reconstruire l'image web.. voici le message d'erreur :

docker-compose` build web

_ERROR: 
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?_

        Supported filenames: docker-compose.yml, docker-compose.yam
Stoakes commented 5 years ago

Ok, bien joué !

Avant de lancer le rebuild de l'image, j'aurais du préciser qu'il fallait aller dans le dossier de Jeyser, désolé. Donc il faut que tu exécutes cd /var/www/Incipio avant docker-ompose build web

alex3475me commented 5 years ago

Ça marche ! j'ai réussi à faire les manip, mais ça n'a pas réglé le bug de memory_limit...

alex3475me commented 5 years ago

Je viens de réussir à régler le bug ! En recherchant dans les dernières missions créées, j'ai trouvé une mission test en cours de réalisation (mal rempli), après l'avoir supprimé le message d'erreur de la page à disparu ! Merci pour votre aide !

Stoakes commented 5 years ago

Interessant. Est ce que tu peux stp me dire ce qui était mal rempli ? Ca permettrait de voir si l'on peut corriger ce bug.

Ou encore mieux, si tu arrives a le reproduire sur la demo de jeyser: http://jeyser-demo.herokuapp.com

Merci d'avance

alex3475me commented 5 years ago

J'ai essayé de reproduire la mission qui a bug dans mon CRM et dans la demo, mais impossible de reproduire exactement les mêmes paramètres et de retomber sur cette page d'erreur ... Désolé... Je reste à l’affût si jamais pour vous communiquer la source du problème !

Stoakes commented 5 years ago

Merci, n'hésites pas à rouvrir le ticket si ça arrive.