Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/12/2008, à 22:30

gillouz

J'ai crée un monstre!

Salut à tous

Il y a 3 ans je me suis pris pour le Dr Frankenstein. J'ai crée pour mon entreprise un portail web avec  php apache et mysql. Aujourd'hui ma créature est devenue incontrôlable.....

Ce portail ainsi que mon entreprise ont grandis.

- Agenda, gestion de documents, email pour le portail
- Passage de 10 magasins a 18 pour l'entreprise avec 3 à 9 pc par magasins

Et c'est la que ça coince...Ce qui marchait bien avec peu de magasins deviens maintenant très lent (même en local!) et j'ai du mal à savoir d'ou cela viens.

J'ai regardé les requettes sql et j'ai essayé de les optimiser mais c'est toujours aussi lent et je ne sais pas par ou commencer pour trouver la cause de cette lenteur. voici mes pistes:

-Nombre de thread mysql
-Nombre de connections apache
-Nombre de fois qu'un scripte php peut être executé

si vous en avez d'autres je suis preneur. Pour le moment je cherche surtout des commandes qui me permettent de savoir d'ou viens le problème.

Merci à vous pour votre aide

Hors ligne

#2 Le 17/12/2008, à 14:38

Peck

Re : J'ai crée un monstre!

Il faut essayer de cerner le problème :
- commande top, si la charge est faible -> problème I/O -> disque ou réseau
- si la charge est forte, toujours dans top -> charge en php, en apache ou en mysql ?
- si apache/php -> optimisation dans php
- si php tout seul -> utilise mod_php
- si mysql -> optimisation des requêtes

Php :
- regarde le nombre de lignes dans l'access log
- utilise xdebug + kcachegrind pour savoir ce qui te bouffe du temps dans le code

Mysql :
- Active le log des slow queries pour savoir quelles requêtes sont lentes
- show full processlist et regarde si tu n'a pas de locks
- si transactions ou écritures lourdes envisage de changer de backend mysql (myisam -> inodb)

Hors ligne

#3 Le 17/12/2008, à 14:42

®om

Re : J'ai crée un monstre!

Peck a écrit :

- si mysql -> optimisation des requêtes

Et création / mise à jour des indexes...

Hors ligne

#4 Le 17/12/2008, à 22:17

gillouz

Re : J'ai crée un monstre!

alors, dans top la charge est faible, mais ce n'est pas le réseau car la machine sert aussi de proxy et ca marche bien, pour les disques ils sont en raid et ne sont pas pleins je me demande comment ils pourraient être devenus lents?

Par contre je crois avoir trouvé un élément de réponse en augmentant le nombre processus apache maximum, le nombre de connections persistantes maximum et en diminuant leur durée de 15s à 7s

En fait je voudrais bien savoir si une commande permet de connaitre le status de Apache comme "show status" dans mysql?

Merci à vous de votre aide.

Hors ligne

#5 Le 19/12/2008, à 18:51

Peck

Re : J'ai crée un monstre!

Apache peut tenir des centaines de connexion. Debian met ce nombre a 15 par défaut, ce qui est très léger. En l'augmentant jusqu'à ce que la charge soit élevée, tu peux gagner beaucoup en performances.

Il n'y a pas de système pour savoir ce que fait apache. Il existe apachetop, mais celui-ci ne fait que lire les logs d'apache pour indiquer le nombre de requêtes traitées en continu.

Hors ligne

#6 Le 19/12/2008, à 19:12

pouchat

Re : J'ai crée un monstre!

tu peux aussi utiliser un système de cache (xcache...) pour PHP. Le gain de temps et de charge est surprenant.

Hors ligne

#7 Le 21/01/2009, à 08:41

gillouz

Re : J'ai crée un monstre!

merci a vous pour vos reponse. Maintenant que le problème de apache est réglé je vais regarder xcache

Hors ligne