Serveur Apache et performances (Proxy, cache, redondance)

SuperCed

Membre expert
Club iGen
20 Juin 2001
1 354
72
46
superced.rb38.eu
J'ai un site à forte consultation qui fonctionne bien, cependant, j'aimerais prévoir une é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'éléments statiques. Donc un serveur en plus avec ce reverse proxy. Ainsi, les données statiques sont très vite transmises. Cependant, cela fait une étape en plus pour les accès à mes pages PHP non statiques (beaucoup). De plus, cela necessite un peu de dé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éservir ce contenu statique.

3- Ajouter encore un serveur Apache frontal, ce qui porterait le tout à 4 frontaux.

La personne qui me propose ça me dit que le fait de sé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é de bench.

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

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

Merci!
 
J'ai un site à forte consultation qui fonctionne bien, cependant, j'aimerais prévoir une é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'éléments statiques. Donc un serveur en plus avec ce reverse proxy. Ainsi, les données statiques sont très vite transmises. Cependant, cela fait une étape en plus pour les accès à mes pages PHP non statiques (beaucoup). De plus, cela necessite un peu de développement sur le site.

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é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 à 4 frontaux.

ok mais optimize tes apaches vire tous les modules qui ne servent à rien

La personne qui me propose ça me dit que le fait de sé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é de bench.

connerie ca dépend tellement de l'arch

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

oui ca marche c'est juste tres chiant à bouger apres, si ta conf est stable ok

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

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


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

:D
 
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.
 
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 été modifié

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