[article] Faire évoluer son architecture serveur

WRInaute passionné
Tout les webmasters ont été un jour confronté au problème suivant : "mon site est maintenant à l'étroit sur son hébergement actuel, quelle solution choisir ?"

On débute sur un mutualisé, puis on passe sur un petit dédié, puis un dédié plus gros et puis ...

Cet article à pour objectif de proposer des solutions d'évolutions d'architectures serveur en tenant compte des performances et des coûts.

En matière de terminologie, pour la clarté de l'article, j'appellerais "serveur" la machine physique (l'ordinateur) et "service" le logiciel (l'application). Je prendrais également pour hypothèse que le serveur est un serveur LAMP (linux + apache + mysql + php)

Avant de choisir une architecture "serveur" il faut avant tout définir les "services" dont on a besoin, les principaux étant, dans le cas qui nous intéresse, le "service web", le "service mail", le "service ftp", le "service base de données".
Je ne parlerais pas du "service ssh", indispensable pour se connecter sur son "serveur" à distance, ni des "services" de type système.

Nous avons donc notre "serveur" qui héberge ces "services" et nous sommes à l'étroit en raison du la charge (en gros du trafic) et nous n'avons pas les moyens de prendre un serveur plus gros et plus cher ! que faire ?

1 ère solution, l'optimisation

Si le serveur est un serveur clé en main, les différents "services" installés sont configurés de façon disons, universelle, pour répondre aux besoins du plus grand nombre. Il est donc intéressant de regarder, "service" par "service" aec quelles options ils sont installés et compilés afin de supprimer ce qui ne sert pas.

Pour le "service" web, si c'est apache, reportez vous à mes articles optimiser son dédié et bien configurer apache

Pour le "service" base de données, si c'est mysql, un petit coup d'oeil à l'excellente doc en ligne de mysqlvous permettra de "tuner" efficacement votre "service" mysql pour grappiller quelques ressources.

En ce qui concerne le "service ftp", posez-vous la question de son utilité (hé oui! j'ai connu bien des cas ou il ne servait à rien !) même si votre site propose aux utilisateurs d'uploader des fichier, il existe des alternatives à ftp.

Pour le service mail, on distingue le "smtp" et le "pop" (ou l'imap). Si votre serveur doit envoyer des mails (contact, newsletters) le smtp est nécessaire. Par contre, posez-vous la question de l'utilité du pop, vous pouvez trés bien héberger vous boites aux ailleurs à moindre coût.

Enfin pour PHP, vous pouvez bien entendu optimiser votre code, installer un cache d'opcode etc ... Mais le résultat le plus spectaculaire sera obtenu en recompilant PHP aprés avoir supprimer l'inutile ! J'en voie qui froncent les sourcils d'un air dubitatif. Je m'explique par l'exemple:

Utilisez-vous les fonctions wddx_xxxxxxx ? Non, alors vous n'avez pas besoin de la librairie WDDX.
Utilisez-vous les fonctions mhash_xxxxxx ? Non, alors vous n'avez pas besoin de la librairie HASH.
Utilisez-vous les fonctions ftp_xxxxxx ? Non, alors vous n'avez pas besoin de la librairie FTP.

etc ....

Une fois identifiées les librairies inutiles (là, il faut regarder la doc PHP) il vous suffit de recompiler PHP en désactivant le support des dites librairies (par exemple --disable-ftp --disable-wddx etc ...)

Le gain en occupation mémoire des processus apache-php est considérable (j'ai diminué de 60% cette taille de processus sur certaines config!)


2 éme solution, 2 serveurs valent mieux qu'un (à coût constant)

je vais prendre un exemple rapide que j'ai expérimenté (je tiens avant tout à préciser que les hébergeurs cités le sont à titre d'exemple et la qualité de leurs services respectifs n'est en aucun cas débatus dans cet article)

2 dédibox (processeur C7 2 Ghz, 160 Go disque et 1 Go de mem) se sont avérés plus performant qu'un superplan 2007 + (à 'époque Core2duo 2x1,8 Ghz , 2 Go de mem et 160 Go de disque) pour un coût inférieur de 30 %. Le gain de charge était voisin de 50 %.

Dans ce cas précis, l'architecture était la suivante:

Serveur 1 : Apache + PHP (serveur de pages web)
Serveur 2 : Mysql + lighttpd(serveur mysql et serveur d'image).

Les raisons ? Tout d'abord, apache est un gros consommateur de processus donc de mémoire. Mysql est lui un gros consommateur de CPU, et de mémoire. La solution de les installer sur des machines différente est bien connue et a fait ses preuves.

La petite innovation de la solution étant de faire tourner un serveur d'image sur la même machine que mysql. Le choix du service web s'étant porté sur lighttpd en raison de sa faible trace mémoire et de ses meilleures performances q'apache pour servir des fichiers "statiques". D'autres parts, notre apache du serveur 1, ainsi délivré de la charge de servir des images avec des processus surdimensionnés pour cela s'en trouvait bien mieux.
Enfin, les deux serveurs se backupaient l'un l'autre (avec une tache cron rsync en ssh) , histoire d'utiliser l'espace disque libre.

Actuellement, je travaille à la mise en place d'une architecture identique à deux serveurs avec en plus un service de streaming vidéos (avec conversion automatique des formats vidéos)

Pour conclure, si malgré tout vous êtes à l'étroit, il reste encore la solution de la répartition de charge multiserveurs (load-balancing) mais une telle architecture sort du cadre de cet article et de ce forum. :wink:

[ j'édite ce post pour apporter une précision suite à un MP: ]

En ce qui concerne PHP, certains modules sont compilés par défaut. Si ils sont innutiles il faut les désactiver à la compilation. Ensuite, si PHP est installé par apt-get (debian) ou yum (fedora) ou autre, il n'y a qu'a regarder avec phpconfig() pour voir l'ensemble des modules compilés avec php et trés souvant il y en a beaucoup d'inutiles.
 
WRInaute passionné
pour compléter , lighttpd peut aussi s'installer en local sur un dédié et vous pouvez ensuite rediriger les requetes pour un sous domaine type "images.monsite.com" sur ce serveur web avec le mod proxy d'apache.

utile si vous avez une grosse gallérie d'images et pas les moyens de vous payez un gros serveur

+1 pour la reco
 
WRInaute passionné
Mumuri a dit:
pour compléter , lighttpd peut aussi s'installer en local sur un dédié et vous pouvez ensuite rediriger les requetes pour un sous domaine type "images.monsite.com" sur ce serveur web avec le mod proxy d'apache.

utile si vous avez une grosse gallérie d'images et pas les moyens de vous payez un gros serveur

+1 pour la reco

A ce sujet, il faudrait que je fasse des test avec apache en serveur principal et mod-proxy qui redirige sur lighttpd pour le statique et l'inverse, lighttpd en principal qui redirige vers apache pour le php, voir aussi lighttpd seul avec php tournant en cgi.

Je n'ai aucune idée à priori de la solution la plus efficace.

J'utilise déjà des config avec deux apaches (un avec php, un pour le statique) pour des serveurs ou je mutualise plusieurs clients et ça marche trés bien avec un gain de performence appréciable.
 
WRInaute passionné
Auriez-vous un site référence "pour les nuls" puis un site pour approndir (ou les 2 en 1) pour apprendre à installer et gérer un serveur ?

Je désire apprendre d'ici peu à gérer moi meme mes serveurs, seulement j'aimerai un guide pour pas trop me planter (sachant que les sites seront en prod, je peux pas dire de tout planter).

On a souvent des informations intéressantes (comme ici) mais vue de l'extérieur, pas simple à mettre en pratique. Ou sinon, à l'inverse, on a des infos concrètes mais qui sont expliqués pour ceux qui connaissent déjà et là, c'est du chinois.
 
WRInaute passionné
tonguide a dit:
Auriez-vous un site référence "pour les nuls" puis un site pour approndir (ou les 2 en 1) pour apprendre à installer et gérer un serveur ?

Installation complète : -http://olange.developpez.com/articles/debian/installation-serveur-dedie/
Les commandes de base de Linux : -http://www.linux-france.org/article/debutant/debutant-linux.html

Si tu veux un conseil, installe toi une petite Knoppix en local à partir du LiveDVD (Knoppix est une debian en mode bureau assez agréable [avis perso])... Et test 2-3 commandes...

L'article de fandecine est excellent, mais bon, il aurait dû commencer par "prendre un dédié si vous connaissez un minimum Linux et son environnement"...

Le premier guide dont je t'ai donné le lien est parfait si tu prends un serveur dédié sous une Debian de base... (Juste l'install de vsftpd que je remplace par proftpd). Et te permet d'avoir un serveur parfaitement stable.

Si les sites sont en prod comme tu le dis, je te conseil aussi de prendre la box la moins cher que tu trouveras, voir un Virtuel pour t'amuser et surtout pour apprendre...
 
WRInaute passionné
Ok merci pour les conseils.

Je pense effectivement que ça serait plus raisonnable de prendre un mini dédié (voir un PC chez moi ?) pour apprendre à gérer tout ça.

Je met ces 2 sites en favoris donc !
 
WRInaute discret
Bonjour
J'ai trouvé cette série d'articles très intéressante.

J'ai un serveur dédié avec une configuration qui commence à dater:
mysql Client API version 4.0.24
PHP Version 4.3.10-22
Apache/2.0.54 (Debian GNU/Linux)

Sur ce serveur j'ai 2 vieux scripts que je souhaite garder: phpbb en version 2.03 et un vieux lifetype 1.0.3.
Bien sur ces scripts mêmes vieux ont été mis à jours contre quelques hack, mais ils gardent leur config d'origine.

Bref, mon hosteur me propose de basculer mon serveur avec les derniers mysql 5. que faut-il craindre ? existe-il une possibilité à l'installation de garder un mysql plus compatibles avec les anciens scripts ?
Merci.
 
WRInaute passionné
poupee a dit:
Bonjour
J'ai trouvé cette série d'articles très intéressante.

J'ai un serveur dédié avec une configuration qui commence à dater:
mysql Client API version 4.0.24
PHP Version 4.3.10-22
Apache/2.0.54 (Debian GNU/Linux)

Sur ce serveur j'ai 2 vieux scripts que je souhaite garder: phpbb en version 2.03 et un vieux lifetype 1.0.3.
Bien sur ces scripts mêmes vieux ont été mis à jours contre quelques hack, mais ils gardent leur config d'origine.

Bref, mon hosteur me propose de basculer mon serveur avec les derniers mysql 5. que faut-il craindre ? existe-il une possibilité à l'installation de garder un mysql plus compatibles avec les anciens scripts ?
Merci.

UUUUUH! sur un site en production avec des scripts non développé par moi, je ne prendrais pas le risque de passer mysql de 4 à 5 sans faire de test préalable.

Pour cela, j'ai un serveur de test (un kimsufi) que je martyrise souvant (installations, re-installations, compilations etc ..). Mais cela peut se faire avec un vieux pc, mais pose toi d'abord la question "est ce bien necessaire ?". Ta config est pas si vieille que ça aprés tout.
 
WRInaute discret
Très bon article ça, intéressant ! Ca va me servir dès que j'aurais l'occasion de passer sur un serveur dédié un jour...!

Merci fandecine :wink:

+1
 
WRInaute passionné
Ohax a dit:
Php4 est voué à disparaitre dans quelques mois donc... ;-)

Ma voiture n'est plus fabriquée depuis 12 ans et pourtant, je l'utilise toujours :wink:

Lorsque l'on a un serveur en production qui marche, donne satisfaction et qu'il n'y a pas de problèmes de sécurité on y touche pas a moins de tester la nouvelle architecture au préalable sur une autre machine sinon on prend le risque de l'interruption de service qui peut durer ... un certain temps !
 
Nouveau WRInaute
Bonsoir :)

Alors déjà je tenais à te rémercier pour tes précédents topics, notament ceux sur Apache2 qui m'ont permi de configurer la bête alors que je venais de prendre ma première dedibox, il y a de ça quelques mois déjà. Bien qu'à l'époque je n'avai spas tout compris, c'est vraiment intuitif, merci ;)

Avec l'augmentation de mon traffic j'ai décidé de migrer sur un duo super plan + (peut être une mauvaise idée, mais bon, l'avenir me le dira :D) Seulement, il est très dûr de trouver des conseils quant à l'optimisation de mysql lorsqu'il tourne tout seul sur une bébête à 2go de ram.

Vu que tu semble l'avoir fait pour une dedibox, aurai tu des conseils pour que mysql utilise à 100% les capacités de mon serveur ?
 
WRInaute passionné
Bonjour dabYo,

Je suis en train de faire l'inverse de ce que tu veux faire, c'est à dire passer d'un core2duo avec 2Go de ram de chez OVH vers 2 Dedibox !

En effet, comme je l'indique dans cet article, le deport de MySQL sur un deuxième serveur augmente considérablement les performences ce qui permet d'utiliser des serveurs moins puissants. Ensuite, le cout de deux dédibox (même de 3 !) est inferieur au coût de mon serveur OVH actuel.
En plus, avec deux serveurs, je peux mettre en place des backups croisés ce qui me garanti contre des pertes de données. Enfin, pour en avoir fait l'expérience, la BP chez dédibox est bien meilleur que celle fournie par OVH avec mon serveur.

Sinon, pour répondre à ta question sur MySQL, c'est difficile de faire un diagnostic sans éléments mais les règles à respecter sont toujours les mêmes :

1 - Eviter d'utiliser les binaires standarts afin de pouvoir "tuner" sa configuration et supprimer l'inutile (c'est bon pour apache, mysql et php)
2 - Eviter de faire faire plusieurs fois la même opération à mysql, c'est à dire utiliser un système quelconque de cache (le mien est pas mal :wink: )
3 - Virer du serveur tout ce qui est inutile à sa fonction principale : servir des pages web
4 - Bien configurer ses applications et ne pas hesiter à tester (chaque utilisation étant unique, la config universelle d'un application n'existe pas!)
5 - Enfin, ne pas hésiter à perdre une heure pour consulter les docs car ce sont des heures gagnées à ne pas chercher dans l'urgence d'ou vient un problème.

Pour des conseil moins généraux et plus ciblés, il me faudrait beaucoup plus d'infos :wink:
 
Nouveau WRInaute
Disons que mon parcours est plutôt bizarre, car j'utilise un serveur aux USA très peu cher (et que je ne peux pas administrer), une dedibox, et un chez OVH. Je voulais tout rassembler pour ne plus avoir ce temps de latence entre les serveurs, donc j'ai choisi d'oublier celui aux US et la Dedibox au profit d'un deuxième superplan +.

- Donc il s'agirait pour le serveur MySQL d'un Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz à 2go de ram.
- Et pour Apache2, ce serait un Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz avec 2go de ram ici aussi.

Bien entendu les serveurs ne font que ça, j'envisage après moi aussi de faire héberger mes images par le serveur qui gère MySQL. Au niveau BP j'ai pas de problème, c'est surtout PHP et MySQL qui me bouffent.
 
WRInaute passionné
avec 2 core2duo et 2 x 2 Go de mem tu peux voir venir :wink:

Pour le serveur avec apache et PHP, je te conseille de compiler à partir des sources avec les module apache en statique (tu dois savoir exeactement les modules dont tu as besoin) et de desactiver toutes les extension PHP que tu n'utilise pas, tes processus apache seront plus leger.
(desactive le debug également)
Pour apache je te conseillerais plutôt apache 1.3 plutôt que apache 2 car les avancées d'apache2 ne sont pas utilisables avec PHP et de plus apache 1.3 est plus facile à tuner et légérement moins gourmand en memoire, mais là, c'est du détail.

Un cache d'OpCode serait le bienvenue pour PHP. Perso, j'utilise Zend Optimizer bien qu'il existe plus performant mais il est trés stable et ne me cause pas de soucis.

Pour le deuxiéme serveur, veille à utiliser la même version de MySQL que le client MySQL du premier serveur. Pour servir les images, lighttpd est trés trés performant et a une trés faible trace mémoire ce qui devrait permettre à MySQL de s'épanouir pleinement :wink:

Dernier conseil si tu utilises les fonction Images de PHP (avec GD2) occasionellemnt, débrouilles toi pour les installer sur le serveur 2 (celui de Mysql) avec un PHP en mod_cgi. Cela diminuera considérablement le poids de tes processus apache.

Voilà, voilà.

Je suis en train de terminer ma config deux serveur avec en plus, le streaming viédo et je devrais pouvoir cimmuniquer des comparatifs de performance entre les deux solutions sous peu ...
 
Nouveau WRInaute
Bonjour Fandecine,
as-tu réaliser les tests et fais le comparatif de performances de ces deux types d'architectures (2 dedibox ou un serveur core 2 duo plus puissant)?
Car je suis tres interessés par les résultats de ces tests.

Merci
 
WRInaute passionné
De toute manière, à partir d'un certain traffic, il faut toujours tendre vers la clusterisation à outrance plus que vers des serveurs hyperpuissants.
 
WRInaute occasionnel
Merci fan decine, prochaine étape, nous expliquer comment faire du loadbalancing comme tu l'évoue dans l'article avec plus de 2 serveurs ce coup ci :)
loadbalncing de base de donnée aussi si possible car en ce qui me concerne, ça a toutjours été la base de donnée mon problème principal, c'est beaucoup plus consomateur en cpu/mémoire qu'un apache bien optimisé.
 
WRInaute occasionnel
Retour d'expérrience de recompilation PHP suite au post de fandecine :

Avant recompil de PHP : taille moyenne des process apache : 40M

Après recompil de PHP : taille moyenn des process apaches : 16M !!!!!!!!!!!!!!!!!!!

Un grand merci à fandecine pour ce post.

Si ça peut aider voici la igne de configure que j'ai utilisé, mais attention ça dépend vraiment de votre utilisation de php :

Code:
./configure --with-apxs2=/usr/sbin/apxs --with-mysql --enable-mbstring --disable-ftp --disable-wddx --without-iconv --disable-json --disable-pdo --disable-posix --disable-reflection --disable-spl --without-sqlite --without-pear --disable-xml --disable-libxml --disable-simplexml --disable-xmlreader --disable-xmlwriter --disable-zip --disable-dom

A noter que pour la plupart des utilisations on peut aussi désactiver mbstring si son site ne traite pas de caractère unicode.

Wow, j'en reviens toujours pas...
 
WRInaute passionné
sietjp a dit:
Merci fan decine, prochaine étape, nous expliquer comment faire du loadbalancing comme tu l'évoue dans l'article avec plus de 2 serveurs ce coup ci :)
loadbalncing de base de donnée aussi si possible car en ce qui me concerne, ça a toutjours été la base de donnée mon problème principal, c'est beaucoup plus consomateur en cpu/mémoire qu'un apache bien optimisé.

Une solution a mon gout plus performante qu'un load balancing sur des BDD est d'avoir 2 mysql (1 maitre et un esclave) le maitre synchronise sur l'esclave, on fait les requestes INSERT et UPDATE sur le maitre et les SELECT sur le slave, on gagne enormement en perf avec un tres gros trafic (+100 000 VU/mois). Le loadbalancing etant plus optimum pour des gestions de charges sur des serveurs web.
 
WRInaute passionné
sietjp a dit:
Retour d'expérrience de recompilation PHP suite au post de fandecine :

Avant recompil de PHP : taille moyenne des process apache : 40M

Après recompil de PHP : taille moyenn des process apaches : 16M !!!!!!!!!!!!!!!!!!!

Un grand merci à fandecine pour ce post.

Si ça peut aider voici la igne de configure que j'ai utilisé, mais attention ça dépend vraiment de votre utilisation de php :

Code:
./configure --with-apxs2=/usr/sbin/apxs --with-mysql --enable-mbstring --disable-ftp --disable-wddx --without-iconv --disable-json --disable-pdo --disable-posix --disable-reflection --disable-spl --without-sqlite --without-pear --disable-xml --disable-libxml --disable-simplexml --disable-xmlreader --disable-xmlwriter --disable-zip --disable-dom

A noter que pour la plupart des utilisations on peut aussi désactiver mbstring si son site ne traite pas de caractère unicode.

Wow, j'en reviens toujours pas...

Je vois que tu utilise apache avec les modules chargés en dynamique, tu peux aussi recompiler apache avec ses modules en statique (aprés bien sur avoir sélectionné les modules utiles ! :wink: ) et tu diminuera encore la taille de tes process apache.

Par curiosité, peut tu nous donner l'extrait de ta conf apache qui décrit les modules à charger ?
 
WRInaute accro
Excellents articles mais si je peux me permettre, tout ceci c'est "tout va pour le mieux dans le meilleur des mondes"

... et malheureusement, ça marche un temps et après les emmerdes surviennent

so, comment faire :

- pour sécuriser ses scripts
- pour blinder sa messagerie
- sécuriser ses accès ssh
- sécuriser ses comptes

etc, etc.
 
WRInaute occasionnel
raljx a dit:
Une solution a mon gout plus performante qu'un load balancing sur des BDD est d'avoir 2 mysql (1 maitre et un esclave) le maitre synchronise sur l'esclave, on fait les requestes INSERT et UPDATE sur le maitre et les SELECT sur le slave, on gagne enormement en perf avec un tres gros trafic (+100 000 VU/mois). Le loadbalancing etant plus optimum pour des gestions de charges sur des serveurs web.

Oui, suite à mon post je me suis documenté et j'ai trouvé une documentation sql extra en anglais qui explique comment utiliser l'architecture maitre esclave que tu décris : http://www.mysql.com/why-mysql/white-pa ... aleout.php

fandecine a dit:
Je vois que tu utilise apache avec les modules chargés en dynamique, tu peux aussi recompiler apache avec ses modules en statique (aprés bien sur avoir sélectionné les modules utiles ! :wink: ) et tu diminuera encore la taille de tes process apache.

Par curiosité, peut tu nous donner l'extrait de ta conf apache qui décrit les modules à charger ?
Comment vois tu que j'utilises apache avec des modules dynamiques (c'est vrai mais je comprends pas comment tu peux le voir avec mon message) ?


Sinon je complète mon retour d'expérience. En fait j'étais bien content au début mais j'ai passé ma journée à recomipler php car petit à petit je me suis rendu compte qu'il y avait certaines fonctions que j'utilisais s'en le savoir.

J'ai bien lutté pour remettre en route eAccelerator, recompiler les libjpeg et freetype2 pour gd et jpgraph.

Mais c'est une expérience trés intéressante qui apprend beaucoup de chose.

Je me suis notamment rendu compte que c'était eAccelerator qui gonflait la taille des thread apache.

Au final, la recompilation de php m'a fait gagné 7M contrairement à ce que je disais dans mon premier post.

Je reposte mon .configure final
Code:
./configure --with-apxs2=/usr/sbin/apxs --with-mysql --with-config-file-path=/etc --enable-mbstring --disable-ftp --disable-wddx --disable-filter --without-iconv --disable-json --disable-hash --disable-tokenizer --disable-pdo --disable-posix --disable-reflection --disable-spl --without-sqlite --without-pear --disable-xml --disable-libxml --disable-simplexml --disable-xmlreader --disable-xmlwriter --disable-zip --disable-ctype --disable-dom --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-ttf=/usr --with-freetype-dir=/usr --disable-magic-quotes

Et voici pour apache :
Code:
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule logio_module modules/mod_logio.so
#LoadModule env_module modules/mod_env.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule deflate_module modules/mod_deflate.so
#LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule status_module modules/mod_status.so
#LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule suexec_module modules/mod_suexec.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
#LoadModule cgi_module modules/mod_cgi.so
#
# The following modules are not loaded by default:
#
#LoadModule cern_meta_module modules/mod_cern_meta.so
#LoadModule asis_module modules/mod_asis.so
LoadModule php5_module        /usr/lib/httpd/modules/libphp5.so
 
WRInaute passionné
sietjp a dit:
Comment vois tu que j'utilises apache avec des modules dynamiques (c'est vrai mais je comprends pas comment tu peux le voir avec mon message) ?
c'est cette option de ton configure : --with-apxs2=/usr/sbin/apxs :wink:

Pour ce qui est de la taille de tes processus apache, il y a aussi GD, Freetype, libjpg etc ... tout ce qui concerne les librairies graphiques qui plombe les processus.

Personellement, je ne les utilise que sur le serveur secondaire (celuis avec mysql et les images). C'est ce serveur qui abrite mes outils d'admin et qui effectuent les traitement d'images. Le serveur de principal est ainsi "allégé". De plus il ne sert que des fichier dynamiques (php) et un seul par connection (keepalive off).
Du coup j'ai essayé de patcher apache avec lingerd pour liberer la connection encore plus rapidement mais j'ai une erreur lors de l'application du patch. J'ai maillé à l'auteur lingerd et j'attend la réponse car je n'arrive pas à trouver d'ou vient l'erreur :cry: Mais cela marche de toute façons trés trés bien :D


Ensuite, je n'utilise pas eaccerator, mais Zend optimiser + Memcache qui est un daemon de gestion de memoire partagé. Bien entendu, la gestion de cette mémoire partagée n'est pas automatique mais écrite dans mon code.

Voici un extrait de la liste des processus du serveur principal :

Code:
www      13319  0.0  0.4  76796  4992 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13320  0.0  0.4  76796  4588 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13321  0.0  0.4  76796  4556 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13322  0.0  0.4  76796  4576 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13323  0.0  0.4  76796  4576 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13324  0.0  0.4  76796  4996 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13325  0.0  0.4  76796  4592 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13326  0.0  0.4  76796  4604 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13327  0.0  0.4  76796  4580 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13328  0.0  0.4  76796  4984 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13329  0.0  0.4  76796  4992 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13330  0.0  0.4  76796  4996 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13331  0.0  0.4  76796  4992 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13332  0.0  0.4  76796  4984 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13333  0.0  0.4  76796  4580 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd
www      13334  0.0  0.4  76796  5004 ?        S    Jan09   0:00 /usr/local/apache/bin/httpd

Et du serveur secondaire :

Code:
www      18703  0.0  0.4  11052  4460 ?        S    Jan11   0:00 /usr/local/bin/php-cgi
www      18704  0.0  0.4  11052  4460 ?        S    Jan11   0:00 /usr/local/bin/php-cgi
www      18705  0.0  0.4  11056  4476 ?        S    Jan11   0:00 /usr/local/bin/php-cgi
www      18706  0.0  0.4  11056  4404 ?        S    Jan11   0:00 /usr/local/bin/php-cgi
www      18707  0.0  0.4  11052  4348 ?        S    Jan11   0:00 /usr/local/bin/php-cgi
www      23965  0.0  0.2  38452  2524 ?        Sl   06:25   0:00 /usr/local/sbin/lighttpd 
root       30767  0.0  0.1  3660  1292 ?          S    2007    0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe
mysql    30794  0.1  6.3  365380 65080 ?      Sl   2007    29:18 /usr/local/mysql/libexec/mysqld
www      31000  0.0  0.3  10964  3996 ?        Ss   2007    0:00 /usr/local/bin/php-cgi

Chacun des serveurs ayant 1Go de mem. :D
 
WRInaute occasionnel
Hé ben on apprend des choses :eek:

Fandecine aurait tu un lien pour aider dans la compilation d'apache l'allégeant des modules inutiles ?

RoN
 
WRInaute passionné
Avant de chercher à recompiler apache en sélectionnant les modules apache, il faut savoir à quoi ils servent :wink:

Voici la liste des modules standarts apache 1.3 :

mod_access : Contrôle d'accès basé sur le nom du client ou son adresse IP
mod_alias : Association de différentes parties du système de fichier de l'hôte dans l'arborescence des documents, et redirection des URL.
mod_asis : Envoi de fichiers contenant leurs propres en-têtes HTTP
mod_auth : Authentification des utilisateurs à partir d'un fichier texte
mod_auth_dbm : Authentification des utilisateurs à partir d'un fichier DBM
mod_autoindex : Création automatique des listes des répertoires
mod_cgi : Appel des scripts CGI
mod_dir : Gestion de base des répertoires
mod_env : Passage d'environnement aux scripts CGI
mod_expires : Ajout de l'en-tête Expires: pour les ressources spécifiées
mod_headers : Ajout d'en-têtes HTTP aux ressources
mod_imap : Gestion des fichiers imagemap
mod_include : Documents analysés par le serveur
mod_info : Informations sur la configuration du serveur
mod_log_agent : Trace des User Agents
mod_log_config : Trace configurable des accès.
mod_log_referer : Trace des référants d'un document
mod_mime : Détermination du type des documents en fonction de l'extension du fichier
mod_mime_magic : Détermination du type des documents en fonction de "nombres magiques"
mod_negotiation :Négotiation de contenu
mod_proxy : Module de cache par proxy
mod_rewrite : Association des URI à des fichiers en utilisant des expressions régulières
mod_setenvif : Définition de variables d'environnement en fonction des informations client
mod_so : Support des modules dynamiques
mod_status : Affichage de l'état du système
mod_userdir :Répertoires personnels d'utilisateurs
mod_unique_id : Génération d'identifiants uniques de requête
mod_usertrack : Suivi des utilisateurs à l'aide de cookies
mod_vhost_alias : Support d'hôtes virtuels dynamiquement configurables

ensuite, étant donné que je n'ai pas encore ouvert de site pour publier mes tutos
:oops: tu m'envois un MP avec ta configuration (OS, processeur, mémoire disqu etc) et tes souhaits d'application et je te renvois un tuto sur mesure :wink:
 
WRInaute occasionnel
Pour essayer d'en faire profiter tout le mode jme suis installé un wiki, rapide a mettre en place et simple pour rédiger (-www.ronux.fr/wiki)

Sinon on pourrait prendre un exemple assez commun :

Debian etch sur un petit serveur comme un kimsufi ou dedibox fesant tourner un blog/wiki/annuaire :wink:

EDIT : j'ai relu , en fait il faudrai plutot compiler php non ?


EDIT 2 : bon j'ai trouver les 36 modules a laisser en place , la liste expliquée des modules et je sais ceux dont j'ai besoin , maintenant comment on configure avant de faire le make ?

EDIT 3 : bon ben jvais adopter lighttpd , ca peut etre utile de compiler php quand meme ?

Merci beaucoup :)
 
Discussions similaires
Haut