idée de la consommation RAM d'un bon script PHP ?

idée de la consommation RAM d'un bon script PHP ? - PHP - Programmation

Marsh Posté le 09-03-2009 à 01:11:19    

Salut :)
 
Voilà, je me pose une question, je fais du PHP depuis un bout de temps et maintenant que je touche a des sites à très forts trafics je m'intéresse de plus en plus aux performances du code.
donc je me suis penché sur la fonction memory_get_usage. Mais voilà je n'ai aucune idée de la façon dont interpréter les données.
 
j'ai constitué un framework avec une collection de l'ordre d'une trentaine d'objet, et j'obtiens des pages dont la consommation atteint 2.5Mo.
Après rien ne me permet d'évaluer si c'est bon ou pas, donc j'aurais besoin de vos lanternes, si vous avez un site à donner...
 
Merci par avance ;)


Message édité par the_bigboo le 09-03-2009 à 01:11:35
Reply

Marsh Posté le 09-03-2009 à 01:11:19   

Reply

Marsh Posté le 09-03-2009 à 06:47:09    

utilise plutot valgrind pour mesurer tes performances : http://osterman.com/wordpress/2006 [...] d-with-php
 
et sino , ben ca depend de tes objets


---------------

Reply

Marsh Posté le 11-03-2009 à 10:03:31    

oui, j'imagine... Après niveau optimisations il y avait bien des petits trucs tout cons auquels penser mais, apparemment rien ne semble vraiment efficaces vus que bien souvent c'est lié aux versions de PHP
 
Exemple avec foreach et le while/list qui est plus rapide en fonction des versions de PHP...
 
Y a t-il des petites choses toutes bêtes qui peuvent influencer les performances ? des sites spécialisés pour ca ?

Reply

Marsh Posté le 11-03-2009 à 10:51:24    

Salut,
Peut-etre trouveras-tu des informations intéressantes dans cett conférence (en anglais) de Rasmus Lerdorf (le créateur de PHP).
Les "slides" sont dispos ici.

Reply

Marsh Posté le 11-03-2009 à 11:23:52    

Un site tres interessant sur les petits trucs a savoir pour booster un peu son code :
http://www.phpbench.com/
 
Apres c'est des micros optimisations, des fois changer un algo permet des optimisations bcp plus drastiques : exemple, rajouter un id dans une table pour eviter plusieurs jointures augmente la taille de la bdd mais peut accelerer les requetes sql (FROM t1 LEFT JOIN t2 ON t1.id1=t2.id1 LEFT JOIN t3 ON t2.id2=t3.id2 => rajouter id2 dans t1), etc...


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 12-03-2009 à 11:05:37    


 
Voilà, en fait c'est ça le délire, je travaille en agence web, et je fais des applications objets pour des clients dont généralement la logique c'est "On a des gros besoins, et on veut payer le moins possible , donc hébergé sur un serveur minable mutualisé"
Et là le souci c'est qu'on a beau avoir une application dont le dev est performant, sur un serveur pourri, le résultat sera pourri pour peu que l'application soit un tantinet gourmande... Après j'essaye d'arrondir les angles comme je peux avec du cache justement, mais j'ai dans l'idée qu'on peut faire toujours plus... sans pour autant coder comme un porc ;)

Message cité 1 fois
Message édité par the_bigboo le 12-03-2009 à 11:07:04
Reply

Marsh Posté le 12-03-2009 à 14:22:17    

Ben ouais mais bon ca fait mal au cul de faire un truc nikel et de foutre ca sur un environnement incapable de faire tourner le truc...
 
Pour en revenir au sujet, ou est-ce que je peux trouver un référentiel correct ?
 
Je veux dire une page qui se charge, normalement le temps de construction serveur de la page pour moi ne doit pas dépasser 200ms, mais ce n'est qu'une valeur arbitraire après laquelle on voit que le script est long a charger... Donc pas vraiment une valeur fiable !
 
Ca constitue une bonne valeur ? Sans faire intervenir le traffic (cad un seul thread)

Reply

Marsh Posté le 12-03-2009 à 17:32:07    

the_bigboo a écrit :

Je veux dire une page qui se charge, normalement le temps de construction serveur de la page pour moi ne doit pas dépasser 200ms, mais ce n'est qu'une valeur arbitraire après laquelle on voit que le script est long a charger... Donc pas vraiment une valeur fiable !

Nous avons les mêmes critères, ne pas dépasser les 200ms ( si possible ), avec un serveur mutu ton sql doit souffrir ! restent sqlite si tes requetes sont trop handicapantes.
Pour Memory_get_usage, c'est pas vraiment ce qu'il manque en vérité .. à peu près 500ko en moyenne par page
Bon courage  :jap: (changez le de serveur)


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 12-03-2009 à 18:04:30    

des fois, un tuning du SGBD peut largement améliorer les perfs, genre optimiser les index, augmenter la taille du cache des requêtes, augmenter la taille pour les tables ouvertes ou temporaires...! Sur du MySQL, pour une appli web, j'ai divisé par 5 le temps de chargement d'une page gourmande en requêtes en tunant MySQL ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 12-03-2009 à 20:44:28    

tu as un exemple de conf que je teste ?
ils parlent souvent de mysql_pconnect .. le truc qui a tendance à bloquer quand le nombre de connexions maximales a été atteint ..


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 12-03-2009 à 20:44:28   

Reply

Marsh Posté le 12-03-2009 à 20:46:48    

Recherche le script tuning-primer.sh, c'est un bon début pour apprendre a bien conf ton serveur mySQL

Reply

Marsh Posté le 13-03-2009 à 10:00:34    

J'ai, entre autre, augmenté (par rapport à la valeur par défaut) les valeurs de ces variables :  
max tmp tables
myisam max sort file size
myisam sort buffer size
query cache limit
query cache size
query cache type à ON
 
Après, faut adapter par rapport à ce qui est présenté comme stats par phpmyadmin, item "afficher l'état du serveur".


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 13-03-2009 à 16:35:08    

le fichier est my.cnf ?? si c'est le cas il est très petit ..
faut il effectuer mysqld restart après son édition ?

Code :
  1. [mysqld]
  2. set-variable=local-infile=0
  3. datadir=/var/lib/mysql
  4. socket=/var/lib/mysql/mysql.sock
  5. user=mysql
  6. ..
  7. set-variable = innodb_log_buffer_size=500K
  8. set-variable = innodb_thread_concurrency=2


Je vois pas trop les variables citées ci dessus .. que je vois via phpadmin .. weird ..
Faut-il les rajouter ainsi ?

Code :
  1. set-variable=max_tmp_tables=32
  2. set-variable=max_user_connections=2


si tu as des indications plus précises, ce serait sympa :)


Message édité par grosbin le 13-03-2009 à 16:50:08

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 13-03-2009 à 17:08:17    

Le fichier est ben my.cnf
Tu ne trouvera pas TOUTES les variables dedans lol
Certaines sont par défauts et non présentes.
 
Je te répète : prend tuning-primer.sh, ça t'aidera à comprendre des choses.
 
Edit: http://www.day32.com/MySQL/


Message édité par yellu le 13-03-2009 à 17:10:04
Reply

Marsh Posté le 13-03-2009 à 18:53:23    

je sais j'ai regardé le script mais .. access denied for root, alors j'ai zappé ..
Je préférais avoir un bon exemple de conf à éditer à la mano sans script exterieur :jap:


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 13-03-2009 à 19:03:06    

IL n'y a pas de bon script de conf car tout dépend de TON utilisation, ce que tuning-primer.sh va justement détecter en fonction des informations statistiques que mySQL stock.
Toutes les bases n'ont pas besoins de la même conf et ce même si elles sont sur des serveurs WEB de même architecture technique ...

Reply

Marsh Posté le 13-03-2009 à 21:39:51    

moui ce sont que des stats d'utilisation .. cela n'aide pas à configurer le fichier au passage ..


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 14-03-2009 à 09:49:48    

Bah si, car si tu vois que ton max_connexion est atteint régulièrement, c'est un piste de réglage, si ton max_files_open est atteint aussi ... etc

Reply

Marsh Posté le 14-03-2009 à 10:11:20    

c'est pas faux d'un côté .. on retrouve aussi dans "etat du serveur"
bref perso .. valeurs à modifier quand on a des soucis, sinon aucun gain véritable de rapidité  
:jap:


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 18-12-2009 à 11:17:39    

Bonjour
je remonte le sujet :)
 
Je m'intéresse également au sujet, j'ai trouvé un article parlant d'un garbage collector en PHP5.3 : http://blog.pascal-martin.fr/post/ [...] on-memoire
 
Le souci c'est que dans et article, l'auteur ne prned pour exemple que des classes avec des références cycliques, mais est-ce qu'il y a moyen de "dumper" la mémoire de PHP, pour voir toutes les variables utilisées et leur conso mémoire ?


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 18-12-2009 à 14:14:55    

tu pourrais utilisé get_defined_vars

Reply

Marsh Posté le 20-12-2009 à 11:48:13    

sympa cette fonction !
Merci, j'ai de quoi décortiquer.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 27-12-2009 à 16:14:53    

t'as eté voir du coté de xdebug ? t'as des fonctions intéressantes
 
http://xdebug.org/docs/

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed