conso memoire excessive, pb de sessions ?

yop
Invité n'ayant pas de compte PHPfrance

08 oct. 2010, 17:09

Hello tous,
j'administre un serveur web intranet php/apache sous rhel5
j'ai un probleme de surconso mémoire par les processus httpd
certains process atteignent 600Mo de mémoire
j'ai identifié 2 pistes aussi louches l'une que l'autre

1. quand une page accède à une ressource (image, css, js) absente => code 404, le processus consomme quelques Mo de plus sans les rendre

2. pour controler si un script php ne boucle pas, j'ai testé une alimentation progressive des variables de session :
- une session avec 1 Mo de data => +3 Mo sur le processus
- une session avec 8 Mo de data => +24 Mo
- une session avec 10 Mo => +500 Mo environ

quelqu'un a-t-il une idée pour expliquer un comportement pareil ?

ViPHP
ViPHP | 3300 Messages

10 oct. 2010, 12:01

Hello tous,
j'administre un serveur web intranet php/apache sous rhel5
j'ai un probleme de surconso mémoire par les processus httpd
certains process atteignent 600Mo de mémoire
j'ai identifié 2 pistes aussi louches l'une que l'autre

1. quand une page accède à une ressource (image, css, js) absente => code 404, le processus consomme quelques Mo de plus sans les rendre

2. pour controler si un script php ne boucle pas, j'ai testé une alimentation progressive des variables de session :
- une session avec 1 Mo de data => +3 Mo sur le processus
- une session avec 8 Mo de data => +24 Mo
- une session avec 10 Mo => +500 Mo environ

quelqu'un a-t-il une idée pour expliquer un comportement pareil ?
Ta consommation mémoire vis à vis de tes sessions, n'est probablement pas réaliste, il s'agit de type de donnée, exemple un tableau à plusieurs dimensions, ou des objets en session c'est très gourmand en mémoire, alors que si tu stockes un tableau d'entier ca sera pas grand chose, la complexité des données a son importance, une manière d'améliorer grandement la consommation de la ram tu peux stocker ce que tu stockes en session, dans un fichier, et ne stocker que le nom du fichier en session, ca sera moins performant d'un point de vue rapidité, mais la ram sera épargnée.
Fait du php depuis que ca existe ou presque :)

yop
Invité n'ayant pas de compte PHPfrance

11 oct. 2010, 07:47

Merci bien Nagol

mes données sont simples :
for ( $i=0; $i<10000; $i++ ) {
        $_SESSION['phpcheck'][$i]='aaaaaaaaaaaaaaaaaaaaaazertyuiopaazertyuiopaazertyuiopaazertyuiopaazertyuiopaazertyuiopaazertyuiopaazertyuiop' ;
}
echo " encoded size = " . strlen(session_encode());
pour préciser ma question, je ne cherche pas à stocker un tel volume en session, j'essaie juste de comprendre ce comportement pour détecter quelles pages du site (un peu plus de 6000 pages php) pourraient provoquer ces désagréments (jusqu'au planté du serveur)

Eléphant du PHP | 217 Messages

11 oct. 2010, 18:26

Bonjour,

Est-ce seulement certain processus ?

Je vous encourage à installer l'utilitaire apache-top qui vous permettra d'avoir une vue comme un top mais sur les process apache et vous pourrez identifier le fichier accèdé par la requete, la charge cpu etc...

Il ne vous restera plus qu'a voir les scripts qui consomment trop de ressource et en identifier la cause.

Genre un gros ficher xml chargé avec le dom est très consommateur, l'utilisation d'un parseur sax ou xmlreader devrait soulager le serveur.
Ou d'autre pistes... identifiez d'abord les pages qui posent problème.

ViPHP
ViPHP | 5462 Messages

11 oct. 2010, 18:29

je trouve ca normale moi, les sessions sont énormes, faut de la ressource pour aller les chercher les parser les mettre dans le script, chaque page par deja avec ce handicape la