# Serveur Apache et performances (Proxy, cache, redondance)



## SuperCed (25 Septembre 2007)

J'ai un site &#224; forte consultation qui fonctionne bien, cependant, j'aimerais pr&#233;voir une &#233;ventuelle hausse de trafic sans que tout tombe.

J'ai actuellement 3 frontaux Apache.
J'utilise PHP sur ces 3 frontaux

On me propose 3 solutions :
1- le reverse proxy qui permet de stocker en cache un certain nombre d'&#233;l&#233;ments statiques. Donc un serveur en plus avec ce reverse proxy. Ainsi, les donn&#233;es statiques sont tr&#232;s vite transmises. Cependant, cela fait une &#233;tape en plus pour les acc&#232;s &#224; mes pages PHP non statiques (beaucoup). De plus, cela necessite un peu de d&#233;veloppement sur le site.

2- un serveur de cache Apache avec uniquement le contenu statique, je ferai alors pointer toutes mes url statiques vers un nouveau serveur. On mettrait lighthttpd ou tinyhttpd pour d&#233;servir ce contenu statique.

3- Ajouter encore un serveur Apache frontal, ce qui porterait le tout &#224; 4 frontaux.

La personne qui me propose &#231;a me dit que le fait de s&#233;parer la partie statique de la partie dynamique apporte un gros gain de performance. Pour ma part, je suis septique et je n'ai pour le moment pas trouv&#233; de bench.

Savez-vous ou je peux trouver quelques sources sur internet l&#224; dessus? Je ne cherche pas un article qui me vante la qualit&#233; des proxy, mais des bench r&#233;els.

D'autre part, existe-il des outils permettant de loguer le temps pris par l'acc&#232;s au disque, et l'utilisation du CPU pour l'interpr&#233;tation PHP?
Ainsi, je pourrai savoir si c'est l'&#233;x&#233;cution du PHP qui est le plus couteux ou s'il s'agit des nombreuses lectures disque.

Merci!


----------



## tatouille (25 Septembre 2007)

SuperCed a dit:


> J'ai un site &#224; forte consultation qui fonctionne bien, cependant, j'aimerais pr&#233;voir une &#233;ventuelle hausse de trafic sans que tout tombe.
> 
> J'ai actuellement 3 frontaux Apache.
> J'utilise PHP sur ces 3 frontaux
> ...



merdique, c'est chiant voir plus bas



> 2- un serveur de cache Apache avec uniquement le contenu statique, je ferai alors pointer toutes mes url statiques vers un nouveau serveur. On mettrait lighthttpd ou tinyhttpd pour d&#233;servir ce contenu statique.



Bullshit, tu peux aussi bien mettre un apache sans tous ses modules de merdes



> 3- Ajouter encore un serveur Apache frontal, ce qui porterait le tout &#224; 4 frontaux.



ok mais optimize tes apaches vire tous les modules qui ne servent &#224; rien



> La personne qui me propose &#231;a me dit que le fait de s&#233;parer la partie statique de la partie dynamique apporte un gros gain de performance. Pour ma part, je suis septique et je n'ai pour le moment pas trouv&#233; de bench.



connerie ca d&#233;pend tellement de l'arch



> Savez-vous ou je peux trouver quelques sources sur internet l&#224; dessus? Je ne cherche pas un article qui me vante la qualit&#233; des proxy, mais des bench r&#233;els.



oui ca marche c'est juste tres chiant &#224; bouger apres, si ta conf est stable ok



> D'autre part, existe-il des outils permettant de loguer le temps pris par l'acc&#232;s au disque, et l'utilisation du CPU pour l'interpr&#233;tation PHP?
> Ainsi, je pourrai savoir si c'est l'&#233;x&#233;cution du PHP qui est le plus couteux ou s'il s'agit des nombreuses lectures disque.



PHP tourne en cache, voir le d&#233;tail de chaque thread oui peut etre en compilant zend en debug, tu peux voir la prise de cpu et de memoire avec top



> Merci!



http://jakarta.apache.org/jmeter/
http://httpd.apache.org/docs/2.0/programs/ab.html

enfin une question interressante ca change parce que depuis un moment c'est la foire aux newbs


----------



## SuperCed (26 Septembre 2007)

En gros, tu me dis d'oublier le proxy.

Et de mettre un apache sans les modules pour tout ce qui est statique ou alors un autre frontal.

Bon, c'est déjà ce que j'avais décidé, mais si c'est du statique, je préfère mettre un serveur http spécialisé pour le contenu statique et plus performant. D'après les benchs que j'ai vus, thhttpd est très performant. Et Tux 3.2 encore plus car il tourne directement dans le noyau.

Le problème d'ajouter un serveur statique, c'est qu'il faut en fait que j'en ajoute 2 pour la redondance. Si un tombe en panne ou est en maintenance, je ne veux pas perdre tout le contenu statique. C'est donc plus cher...

Pour monitorer mes serveur apache, j'ai un outil qui s'appelle cacti et qui me donne pas mal d'infos sur l'utilisation du CPU, la charge, etc.
Par contre, je n'ai pas d'info sur la lecture disque. Je suis pas certain que j'ai l'info avec la commande top.

En fait, j'aimerais connaître la proportion de ce qui prend du temps sur mon serveur Apache : la lecture disque, ou l'éxécution php. Tu sembles dire que le code php est en RAM, c'est bien ça, quand tu parles de cache.

Pour l'optimisation du code PHP, je vais utiliser eAccelerator qui permet de fournir une meilleure compilation du code.
Je sais qu'il en existe d'autres mais c'est ce que propose mon hébergeur, donc on va essayer.

Si tu as des benchs sur tout ce que tu dis, ça m'intéresse.

Merci beaucoup pour tes éclaircissements, ils ont été très utiles.


----------



## tatouille (26 Septembre 2007)

non je dis juste que mettre en place un proxy c'est assez lourd donc tu perds en souplesse
il faut etre sur de sa conf finale parce que c'est du boulot 


avec lsof ? sinon http://smartmontools.sourceforge.net/

l'execution est en opcode (php cache memory), 
soit tu le fais explicitement avec zend optimizer afin de generer des fichiers en opcode
sinon  php regarde si le fichier source a &#233;t&#233; modifi&#233;

tu gagnes pas mal avec le zend optimizer 
si tu passes tes objets maitres qui sont cens&#233;s ne pas trop &#233;voluer
c'est deja un bon gain


----------

