[article] Optimiser son serveur dédié

WRInaute passionné
Voila bien longtemps que j'avais ce post en préparation, mais par manque de temps, je ne l'avais pas publié. N'étant pas un accros des cérémonies commémoratives , je profite de cette journée du 8 mais pour vous le présenter. :D

Il s'adresse à tous les webmaster qui souhaitent tirer un meilleur profit de leur serveur LAMP.

PRÉAMBULE

L'optimisation universelle d'un serveur LAMP n'existant pas, cet article a pour objectif de vous donner les éléments que vous adapterez à vos besoins.

Avant toute modification de configuration de votre serveur, il est nécessaire de réfléchir aux moyens de mesurer les changements de performances induits et mettre en place un banc de test.

Pour mesurer l'impact de vos modifications je vous en propose 2 outils:

apache bench (ab) normalement présent sur votre serveur apache. C'est un utilitaire en ligne de commande qui, même si il ne reproduit pas une utilisation de votre serveur par de vrais internautes, vous permettra de faire des comparaisons au grés des modifications de configuration.

syntaxe: a -n100 -c10 http://domaine.com/page.html

Dans cet exemple on effectue 100 requêtes par groupe de 10 (en parallèle) sur la page du domaine ou serveur domaine.com/page.html


httperf téléchargeable à l'adresse http://www.hpl.hp.com/research/linux/httperf/

Bien entendu, on effectuera les tests depuis une machine différente de la machine à tester pour ne pas fausser les mesures.

En complément de ces outils, on pourra utiliser un script php pour mesurer le temps de génération de la page testée:
Code:
// au debut du script
function tjs_GetTempsTraitement($timer1) {
  $timer2 = microtime();
  $timer2 = substr($timer2,strpos($timer2," ")) + substr($timer2,0,strpos($timer2," "));
  $timer1 = substr($timer1,strpos($timer1," ")) + substr($timer1,0,strpos($timer1," "));
  return round( ($timer2-$timer1) * 10000)/10;
}
$ChronoStart = microtime();

//en fin de script
$temps = tjs_GetTempsTraitement($ChronoStart);
$temps=$temps/1000;
echo"Page générée en ".$temps." seconde";
if ($temps>=2) echo "s";

Un accès au gestionnaire server-status permettra de prendre un instantané des processus apache activés ainsi que de la mémoire occupé qui nous servira pour affiner certains réglages.

Avant de commencer:

Personnellement, je monte moi-même mes serveurs à partir de la distribution linux (généralement une fedora 4) et je n'installe que le strict nécessaire sur le serveur y compris en ce qui concerne les modules apache. Le gain de performance n'est pas significatif mais cela me permet de choisir les versions d'application installée et évite une grande partie des trous de sécurité. La compréhension de ce topic nécessite un certaine connaissance des serveurs LAMP.


Les Optimisations d'apache:

note: nous allons modifier notre configuration apache à partir du fichier httpd.conf. Après chaque modif, il faut re-démarrer apache. Certaines modifications peuvent êtres testées sans modifier la configuration apache en utilisant la fonction PHP

Désactiver les logs d'accès Apache

Les logs d'accès apache génèrent une multitude d'accès disque et sont d'autant plus "bavards" que votre site dispose d'une audience importante. Le fichier acces.log peut ainsi contenir des millions de lignes et occuper plusieurs gigas sur votre serveur. Lorsque c'est le cas, lors de la rotation des logs, votre serveur peut devenir inaccessible aux visiteurs. D'autre part, ce type de fichier devient de part sa taille inexploitable donc inutile.

Pour désactiver les logs d'accès apache, dans le fichier httpd.conf:

CustomLog /dev/null combined

La directive HostnameLookups

Cette directive permet si apache effectue une requête de recherche des DNS ou pas. Il faut savoir qu'une recherche DNS peut être très longue et dépend du temps de réponse de l'adresse cliente et non de votre serveur. D'autres part, si l'adresse cliente ne peut être examinée, il faudra à la requête DNS une minute avant d'abandonner, temps pendant lequel le processus chargé de cette recherche ne pourra servir à rien d'autre. Il faut donc vérifier que cette directive est à Off (sur apache 2, c'est la valeur par défaut alors que sur apache 1.3 la valeur par défaut est On)

La directive AllowOverride

Cette directive indique à apache si il doit chercher un fichier .htaccess dans chacun des répertoires du chemin menant au fichier demandé. Vous comprenez évidemment l'implication sur les performances d'apache.

Si vous n'utilisez pas les fichiers .htaccess, mettez cette directive à none pour tous les répertoire de votre serveur.

Si vous utilisez les fichiers .htaccess, mettez cette directive à none pour tous les répertoire de votre serveur puis utilisez les section <Directory> pour n'activer les fichiers .htaccess uniquement ou cela est nécessaire.


Voila pour ce qui est d'apache. Les utilisateurs plus avertis pourront se pencher sur les directives MaxClients
La directive MaxClients, KeepAlive et les directives de MPM prefork et MPM workers.

Du coté de PHP

En dehors de la qualité du code, il existe des solutions pour améliorer les performances de PHP:

La configuration de php (php.ini) contient de nombreuses valeurs par défaut qu'il est intéressant de modifier pour augmenter les performances de PHP. Et puis, J'ai l'habitude de désactiver tout ce qui est inutile:

expose_php: Par défaut, chaque requête PHP émet un entête HTTP appelé X-Powered-By ce qui est une perte de temps et qui est totalement inutile (sauf pour les personnes qui cherchent à pénétrer sur votre système en se basant sur votre configuration :wink: ). Donc je met expose_php = Off

magic_quotes_gpc: La solution de facilité consiste à mettre magic_quotes_gpc On. Grave erreur! Cela impose de nombreuse vérifications à PHP sur les variables en entrée des script (et sur un site dynamique il y en a beaucoup!) et la plupart du temps c'est inutile car la grande majorité de ces variables ne conduisent pas à un trou de sécurité. De plus, le webmaster pense être protégé des attaques par injection de code ce qui est malheureusement insuffisant. Je préfère gérer moi-même la protection de mes scripts (fonction addslashes() par exemple ou mysql_escape_string() pour les requêtes MySQL) j'économise des ressources, du temps d'exécution et le code de mes scripts est indépendant de la configuration du serveur. Donc, magic_quotes_gpc = Off

output_buffering: Par défaut, PHP envoyer les données au navigateur en mesure que le script les lui transmet ce qui implique de nombreuses opération d'écriture/envoi et ralentit l'exécution du processus en invoquant de nombreux appels système. L'idéal et de fixer la taille du buffer de sorties à la valeur moyenne de la taille des pages de votre site pour essayer d'envoyer le contenu en une seule fois. Veiller cependant à ne pas mettre une valeur trop grande car une exécution simultanée de nombreux processus PHP risquerait de saturer votre mémoire!

register_argc_argv: Utile seulement pour exécuter PHP en mode ligne de commande. Donc, dans le cas d'un serveur web register_argc_argv = Off.

register_globals: Beaucoup de webmasters activent cette directive par habitude et facilité car ils n'on jamais ré-écrit leurs scripts depuis les versions avant PHP 4.2.0. C'est tellement facile de récupérer directement les arguments passés au script par leur nom de variable. Mais outre la faille de sécurité que cela représente, cela oblige PHP à stocker un nombre de variables très souvent inutiles. Donc, register_globals=Off. En plus, je met variables_order = GPC et j'utilise get_env() pour accéder aux variables systèmes et aux variables d'environnement. Tout cela réduit le temps d'analyse des variables en entrée de script et économise de la mémoire. (Pour ceux qui ont du mal suivre, lisez attentivement la doc PHP consacrée aux super globales)

mysql_allow_persistent: Pour un serveur mutualisé, il me parait indispensable de mettre cette directive à Off. Dans d'autres cas, il y a matière à discussion. Personnellement je la met à Off pour éviter que chaque processus Apache ait une connexion particulière à la base de données ce qui finit toujours par entraîner un "Too many connections" même sur de très grosses configurations. Je prends également soin de fermer toutes mes connexions Mysql explicitement dans mes scripts.

Indépendamment de la configuration de PHP, il existe d'autres solutions pour accélérer l'exécution de PHP:

L'utilisation d'un compilateur PHP:

Le langage PHP est un langage de script donc dit interpréter. A chaque exécution de script, le serveur doit lire le fichier, l'analyser, le vérifier, et le transformer en pseudo code avant de l'exécuter. Le processus est d'autant plus long que les scripts sont complexes et lourds. Pour éviter cela, on peut installer un compilateur. Personnellement j'utilise Zend Optimizer (utilisation gratuite sous licence Zend http://www.zend.com/products/zend_optimizer). Les gain de performance sont impressionnant sur certain site (jusqu'à 10 fois plus rapide! 8O )

La mise en cache des scripts:

Je ne vais pas refaire le débat sur l'utilisation d'un cache et quel cache utiliser ici. Référez vous au post https://www.webrankinfo.com/forum/t/script-mise-en-cache-des-pages-php.28614/
La dernière version de cache maison que j'utilise à base de fichiers XML présente l'avantage, outre les performances, de rendre le contenu indépendant de l'habillage du site ce qui me permet de modifier une section du site très rapidement et sans effacer le cache.

Après PHP, intéressons nous à MYSQL. Je ne parlerais pas de la qualité du code (il me faudrait un site web en entier! :lol: ). Je me contenterais de donner un petit truc simple à mettre en oeuvre et diablement efficace dans mon cas.

Lors de nombreuses modifications de vos tables Mysql, celles-ci se fragmentent et perdent leur optimisation. Mysql vient à notre secours avec deux commandes (Optimize et Analyse). Comme il n'est pas question que j'exécute ces commandes manuellement, je paramètre une tache cron journalière pour faire le travail à ma place toute les nuits (lorsque même mes serveurs sommeillent! :wink: )

Les plus accros pourront paramétrer le cache de requêtes mysql. Pour ma part, les essais que j'ai effectué ont montré que le gain de performance ce faisait au détriment d'une trop grosse consommation de mémoire. Le système de mise en cache des pages ne consomme lui, aucune ressource mémoire pour un gain bien plus important au niveau des performances. Mais je me garderais de généraliser car les gains de performances dépendent trop du type de sites et/ou d'applications installées sur le serveur.

Voilà. En espérant que ce topic vous sera utile. :D

PS: Merci de poser vos question sur ce fil et non en MP pour en faire profiter tout le monde. :wink:

edit: juste pour corriger quelques fautes d'orthographe! :oops:
 
WRInaute discret
+1 en effet.

Par contre, apache bench a des limites dans les requetes qu'il envoie ??

Car ca peut facilement virer en DOS sur certaines machines si plusieurs s'y mettent non ?
 
WRInaute passionné
birkoss a dit:
+1 en effet.

Par contre, apache bench a des limites dans les requetes qu'il envoie ??

Car ca peut facilement virer en DOS sur certaines machines si plusieurs s'y mettent non ?

C'est juste un outil de test et de mesure rudimentaire mais utile.

Pour ce qui est attaques, c'est pas le plus efficace! :wink:
 
Olivier Duffez (admin)
Membre du personnel
tjs, j'ai parcouru l'article que tu cites, je ne retrouve pas les conseils fournis par fandecine... Cela dit ne créons pas de polémique, et restons dans le sujet SVP.
 
WRInaute accro
Ah je suis content de voir que sans aucune connaissances mais avec deux ans d'expérience en serveur j'avais fait quelques modifs que tu indiques (couper les logs, ...).

Je vais étudier tes autres indications.

Merci et bravo.
 
WRInaute passionné
merci Bouriquet, je corrige de suite! :oops:


tjs a dit:
Les gars qui s'approprient le travail des autres sans citer leur source me feront toujours marrer...

voir l'original ici http://www.toutjavascript.com/savoir/op ... mance.php3
et pages suivantes...

Lorsque l'on est aussi vindicatif, on va au bout de ses recherches et on trouve l'origine des origines :wink: http://fr.php.net/manual/fr/function.microtime.php

Mais, pour satisfaire les grincheux, une liste de liens ayant servis, entre autre, à la rédaction de cet article:

http://www.toutjavascript.com/savoir/op ... mance.php3 (pour le script php de mesure du temp de génération d'une page), mais je pourais citer http://www.tommyweb.org/sourcesphp/tpspage.html

http://www.apachefrance.com/
http://httpd.apache.org/docs/1.3/programs/ab.html
http://www.hpl.hp.com/research/linux/httperf/
http://www.linux-france.org/article/web ... elinux.php
http://www-fr.mysql.com/
http://www.php.net/

Tant que j'y suis, pour ceux qui veulent aller plus loin, un article sur le module de compression à la volée d'apache (mod_gzip) qui permet d'économiser de la bande passante:
http://www.devparadise.com/technoweb/sys/d57.php

On peut aussi donner quelques référence bibliographiques, mais le plus simple est d'aller sur http://www.oreilly.fr/ faire son choix.
 
WRInaute discret
en ce qui concerne de couper les logs, il me semble qu'en france il est obligatoire d'en stocker 6mois non ?
 
WRInaute discret
Merci pour ces precieux conseils :D

si je désactive access.log:
est ce que awstats va toujours marcher ?
et je suppose qu'il faut aussi désactiver le cron qui lance access.log ?

merci
 
WRInaute discret
C'est exactement ce que je me demandais aussi. A mon avis awstats ne marchera plus car une fois j'ai du vider mes logs et cela a affecté les stats de la journée.
 
WRInaute passionné
casa a dit:
Merci pour ces precieux conseils :D

si je désactive access.log:
est ce que awstats va toujours marcher ?
et je suppose qu'il faut aussi désactiver le cron qui lance access.log ?

merci

Effectivement, en desactivant les logs d'acces, les outils de stats type awstat, webalizer etc ne fonctionne pas, mais, pour continuer dans le cadre de l'optimisation d'un serveur, je rajouterais un conseil: Externaliser tout ce qui est possible cela soulagera votre serveur d'autant. Pour les stats, il suffit de s'abonner à xiti ou estat (gratuit).

Enfin, ne pas oublier que la desactivation des logs d'accés présente un interet d'autant plus grand que les fichiers générés sont importants. Le gain pour un site à faible trafic n'est pas forcement significatif.

casa a dit:
je suppose qu'il faut aussi désactiver le cron qui lance access.log ?
il n'est pas necessaire de modifier les jobs cron.
 
WRInaute discret
Merci encore pour ces conseils et les autres scripts qui permettent de progresser
:D

casa
 
Nouveau WRInaute
Merci de ce tutoriel !

En ce qui concerne l'output_buffering,

Il faut rester dans que ordre de grandeur ?

J'ai mis 25ko (Forum IPB 700 connectés en pointe sur Bixeon 2Go ram SCSI)

Merci !
 
WRInaute passionné
Il n'y a pas de valeur universelle! Mais avec 2 Go de memoire, je pense que tu peux augmenter. :wink:

La valeur optimum est la taille moyenne des pages du site. Si le serveur commence à utiliser le swap, il faut diminuer soit la valeur du output_buffering, soit le nombre de processus apaches autorisé (ou peut être les deux!). Les réglages fin ne peuvent êtres obtenus qu'en faisant des tests (attention de ne pas modifier plusieurs parametres à la fois).
 
Nouveau WRInaute
Merci de ta réponse ;)

Es tu certain qu'il soit benefique de l'activer ?

Je vais tester par moi même remarque... :p

En ce qui concerne la mise en cache/optimisateur de code, zend optimiser c'est bof bof je conseillerais plutot eaccelerator, ou à la rigueur APC cache :p
 
WRInaute occasionnel
J'ai suivi ces conseils et j'ai gagné 1Mo sur chaque thread apache, merci, c'est toujours ça de gagné. Pour les performances je peux pas encore dire mais ça tourne pas plus mal en tout cas ^_^
 
WRInaute impliqué
J'apprécie ton post, mais je trouve quelques points discutables, alors discutons ;-)

Désactiver les logs d'accès Apache
Je crois bien que la loi oblige à conserver les logs pendant 1 an (à vérifier). Quant à un volume "inexploitable", je ne suis pas trop d'accord. Dans mon post un peu dans le même sujet, je conseillais de ne garder que les pages dans les logs et de filtrer les images, css et js. Fatalement, le volume des logs se réduit énormément.

La mise en cache des scripts
Je recommande Cache_Lite plutôt que de ton script : Cache_Lite a un plus, il vérifie que les fichiers ne sont pas corrompus. Il propose de ne mettre en cache que des portions de page ou des pages entières, bref il est plutôt complet et fait face à quasiment toutes les situations possibles.

Pour le cache d'opcode, j'utilise APC. D'après pas mal de benchs trouvés sur le net, celui de Zend n'est pas le plus performant.

My two cents ;-)
 
WRInaute passionné
yanhl a dit:
Désactiver les logs d'accès Apache
Je crois bien que la loi oblige à conserver les logs pendant 1 an (à vérifier). Quant à un volume "inexploitable", je ne suis pas trop d'accord. Dans mon post un peu dans le même sujet, je conseillais de ne garder que les pages dans les logs et de filtrer les images, css et js. Fatalement, le volume des logs se réduit énormément.

Tu est la deuxiéme personne à dire qu'il faut conserver les logs un an. Tu dois t'appuyer sur un texte de loi, un article? Pourrais-tu nous le citer? Personellement, je n'ai jamais entendu ou lu quoi que ce soit dans ce sens. Ensuite, je maintiens mes propos sur l'exploitation des logs d'accès sur les sites à fort traffic:

Si tu souhaite faire des stats, il vaut mieux externaliser se service (xiti, estat...)
Si c'est pour surveiller le serveur, les logs d'erreurs apache at les autres fichiers logs linux sont suffisant : des fichiers logs de plusieurs dizaines de méga octets (ça existe même sans les images!) ne sont pas exploitables!

Maintenant, a chacun sa religion, je ne cherche pas à te convertir! :wink:
yanhl a dit:
La mise en cache des scripts
Je recommande Cache_Lite plutôt que de ton script : Cache_Lite a un plus, il vérifie que les fichiers ne sont pas corrompus. Il propose de ne mettre en cache que des portions de page ou des pages entières, bref il est plutôt complet et fait face à quasiment toutes les situations possibles.

Pour le cache d'opcode, j'utilise APC. D'après pas mal de benchs trouvés sur le net, celui de Zend n'est pas le plus performant.
Mon cache dans sa version XML, présente l'avantage de séparer le contenu de l'habillage. Dans le cas de mon site, si je modifie le design de la page qui présente les fiches de films (plus de 29000) je ne suis pas obligé d'effacer les 29000 fiches de films...

D'autres parts, de la même façon qu'avec le cache que tu préconise, je met en cache ce que je veux également, sauf le code html! :wink:

Mais là encore à chacun sa religion... :D
 
WRInaute passionné
yanhl a dit:
Désactiver les logs d'accès Apache
Je crois bien que la loi oblige à conserver les logs pendant 1 an (à vérifier). Quant à un volume "inexploitable", je ne suis pas trop d'accord. Dans mon post un peu dans le même sujet, je conseillais de ne garder que les pages dans les logs et de filtrer les images, css et js. Fatalement, le volume des logs se réduit énormément.

Tu est la deuxiéme personne à dire qu'il faut conserver les logs un an. Tu dois t'appuyer sur un texte de loi, un article? Pourrais-tu nous le citer? Personellement, je n'ai jamais entendu ou lu quoi que ce soit dans ce sens. Ensuite, je maintiens mes propos sur l'exploitation des logs d'accès sur les sites à fort traffic:

Si tu souhaite faire des stats, il vaut mieux externaliser se service (xiti, estat...)
Si c'est pour surveiller le serveur, les logs d'erreurs apache at les autres fichiers logs linux sont suffisant : des fichiers logs de plusieurs dizaines de méga octets (ça existe même sans les images!) ne sont pas exploitables!

Maintenant, a chacun sa religion, je ne cherche pas à te convertir! :wink:
yanhl a dit:
La mise en cache des scripts
Je recommande Cache_Lite plutôt que de ton script : Cache_Lite a un plus, il vérifie que les fichiers ne sont pas corrompus. Il propose de ne mettre en cache que des portions de page ou des pages entières, bref il est plutôt complet et fait face à quasiment toutes les situations possibles.

Pour le cache d'opcode, j'utilise APC. D'après pas mal de benchs trouvés sur le net, celui de Zend n'est pas le plus performant.
Mon cache dans sa version XML, présente l'avantage de séparer le contenu de l'habillage. Dans le cas de mon site, si je modifie le design de la page qui présente les fiches de films (plus de 29000) je ne suis pas obligé d'effacer les 29000 fiches de films...

D'autres parts, de la même façon qu'avec le cache que tu préconise, je met en cache ce que je veux également, sauf le code html! :wink:

Mais là encore à chacun sa religion... :D[/quote]
 
WRInaute occasionnel
Tant qu'on est dans les systèmes de cache php, autant parler de eaccelerator qui a de meilleurs résultats en terme de gains de perf par rapport à zend. ;)
 
WRInaute impliqué
perso je remercie énormément fandecine qui passe du temps pour nous donner de précieux conseils, ce coup ci c'est l'optimisation serveur, la fois d'avant un super code sur le cache php (que j'utilise d'ailleurs).
si tout le monde partageait autant, ..., j'arrête sinon je vais m'énerver.
encore merci fandecine pour tous tes efforts :wink:
 
WRInaute discret
Salut a tous,
j'aimerais savoir a quoi consiste un optimizer php tels que Zend, Eaccelerator.. il ne fait que optimiserle temps d'execution de nos scriptsphp ? rien a changer, seulement l'installer dans le serveur ?
j'ai vulesite de Zendmais vu que c'est en anglais.. bof bof :(
 
WRInaute discret
fandecine a dit:
yanhl a dit:
Désactiver les logs d'accès Apache
Je crois bien que la loi oblige à conserver les logs pendant 1 an (à vérifier). Quant à un volume "inexploitable", je ne suis pas trop d'accord. Dans mon post un peu dans le même sujet, je conseillais de ne garder que les pages dans les logs et de filtrer les images, css et js. Fatalement, le volume des logs se réduit énormément.

Tu est la deuxiéme personne à dire qu'il faut conserver les logs un an. Tu dois t'appuyer sur un texte de loi, un article? Pourrais-tu nous le citer? Personellement, je n'ai jamais entendu ou lu quoi que ce soit dans ce sens. Ensuite, je maintiens mes propos sur l'exploitation des logs d'accès sur les sites à fort traffic:

-http://www.zdnet.fr/actualites/internet/0,39020774,39297619,00.htm
-http://www.thalix.com/index.php?/archives/96-Conservation-obligatoire-des-logs.html
 
WRInaute passionné
spijoelx a dit:
fandecine a dit:
yanhl a dit:
Désactiver les logs d'accès Apache
Je crois bien que la loi oblige à conserver les logs pendant 1 an (à vérifier). Quant à un volume "inexploitable", je ne suis pas trop d'accord. Dans mon post un peu dans le même sujet, je conseillais de ne garder que les pages dans les logs et de filtrer les images, css et js. Fatalement, le volume des logs se réduit énormément.

Tu est la deuxiéme personne à dire qu'il faut conserver les logs un an. Tu dois t'appuyer sur un texte de loi, un article? Pourrais-tu nous le citer? Personellement, je n'ai jamais entendu ou lu quoi que ce soit dans ce sens. Ensuite, je maintiens mes propos sur l'exploitation des logs d'accès sur les sites à fort traffic:

-http://www.zdnet.fr/actualites/internet/0,39020774,39297619,00.htm
-http://www.thalix.com/index.php?/archives/96-Conservation-obligatoire-des-logs.html

Il ne s'agit que de l'adoption du projet de loi par l'asemblée et le sénat! Mais pas des décrets d'application. Ont-ils été publiés?
 
WRInaute discret
J'ai bêtement appliquer à la lettre certaines recomandations comme la désactivation des logs et évidemment aujourdh'ui plantage du serveur et impossible de voir d'où ça vient :(

Donc j'ai remis les logs et pour les rendre exploitables je les coupe en petits fichiers, chaque fichier ne peut dépasser 5 Mo et quand par exemple j'ai un plantage, il suffit juste de rapatrier le fichier correspond à l'heure du plantage.
 
WRInaute passionné
Surtout qu'avec un système de fichier digne de ce nom et Apache 2, les logs peuvent être bufferisés... donc impact ridicule sur les perfs du système.
 
WRInaute passionné
Bouli a dit:
J'ai bêtement appliquer à la lettre certaines recomandations comme la désactivation des logs et évidemment aujourdh'ui plantage du serveur et impossible de voir d'où ça vient :(

Donc j'ai remis les logs et pour les rendre exploitables je les coupe en petits fichiers, chaque fichier ne peut dépasser 5 Mo et quand par exemple j'ai un plantage, il suffit juste de rapatrier le fichier correspond à l'heure du plantage.

Linux est trés bavard par nature et garde la trace de tout ce qu'il fait, il y a d'autres fichiers logs que ceux d'apache bien plus utiles pour faire un diagnostic! La réponse est rarement dans le fichier log d'accés apache...

Bool a dit:
Surtout qu'avec un système de fichier digne de ce nom et Apache 2, les logs peuvent être bufferisés... donc impact ridicule sur les perfs du système.

A chacun sa religion, mais des écritures fichiers bufférisées ou pas, cela fait des accés disques et consomme des ressources...
 
WRInaute passionné
Ouep mais justement, avec bufferisation du FS + celle d'Apache, les accès disques ne sont pas si fréquents... on ne peut donc pas dire que ça ait un impact si nefaste sur les performances.

Du coup se priver des informations des logs pour gagner si peu de ressources, me semble complètement injustifié. :s
 
Nouveau WRInaute
pour les accelerateurs, est-ce que eaccelerator est suffisamment stable avec PHP5 ?
a l'époque il y avait le fameux turck mmcache sur php4 qui fonctionnait bien, mais depuis, j'hésite à utiliser un optimiser...
 
WRInaute discret
fandecine a dit:
Externaliser tout ce qui est possible cela soulagera votre serveur d'autant. Pour les stats, il suffit de s'abonner à xiti ou estat (gratuit).
Supprimer les logs Apache et placer des outils gratuits, je ne vois pas du tout l'intérêt.
Les logs donnent bien plus d'informations une fois qu'ils sont traités que ces outils là.

fandecine a dit:
Enfin, ne pas oublier que la desactivation des logs d'accés présente un interet d'autant plus grand que les fichiers générés sont importants. Le gain pour un site à faible trafic n'est pas forcement significatif.
C'est un faux problème.
Une rotation quotidienne des logs (par un script) et tes fichiers sont de taille correcte.
De plus, comme le suggère yanhl, on peut 'allèger' les logs en supprimant certains appels (images, js, css, favicon...).
 
WRInaute accro
adviser a dit:
Une rotation quotidienne des logs (par un script) et tes fichiers sont de taille correcte.
la rotation consiste bien dans le fait d'écraser (on perd donc les infos) pour y mettre les infos les plus récentes.?
 
WRInaute discret
thierry8 a dit:
adviser a dit:
Une rotation quotidienne des logs (par un script) et tes fichiers sont de taille correcte.
la rotation consiste bien dans le fait d'écraser (on perd donc les infos) pour y mettre les infos les plus récentes.?
Soit j'ai utilisé un mauvais terme, soit je me suis mal exprimé :)
Ce que je voulais dire, c'est que tu peux sans pb sauvegarder tes logs de manière quotidienne sans perdre de données.

Rotation des logs Apache sur la FAQ Sivit.fr
 
WRInaute accro
c'est donc bien ce que je disais : rotation des logs écrasement des données les plus anciennes (en fonction du délais de rotation) par les nouvelles données.

moi ça ne me dérange pas...c'est vrai que le fichier sera plus légé..
donc pour ceux qu'on un dédié et qui s'en moque..c'est bon..

sinon il faut y penser.

faire une rotation sur quelques jours de manière à garder quelques entrées.
 
WRInaute passionné
adviser a dit:
Supprimer les logs Apache et placer des outils gratuits, je ne vois pas du tout l'intérêt.
Les logs donnent bien plus d'informations une fois qu'ils sont traités que ces outils là.

C'est pourtant écrit lisiblement! Lorsque je dit d'externaliser les services cela concerne l'utilisation des logs pour faire des stats d'accés (ex: webalizer).

Ensuite, les logs il y en a plein d'autres qui donnent les mêmes infos. Donc je maintiens que sur un site en production il n'est pas nécéssaire d'activer les logs d'accés apache (je n'ai jamais parlé des logs d'erreur!)

adviser a dit:
C'est un faux problème.
Une rotation quotidienne des logs (par un script) et tes fichiers sont de taille correcte.
De plus, comme le suggère yanhl, on peut 'allèger' les logs en supprimant certains appels (images, js, css, favicon...).

Là mon coco, on ne doit pas parler de lamême chose. avant la désactivation des logs d'accés sur un de mes serveurs le fichier logs d'accés bien qu'optimisé, dépassait allégrement le Go et lors de la rotation, le serveur était à plat! Je répette donc que cela dépend du trafic. Dans le cas que je site, prés de 350000 pages/jour donc logs d'accés enorme et innexploitables. (Si, si je maintiens :D ) donc desactivation et depuis, le serveur se porte à merveille!

Enfin, je ne vais pas batailler des heures pour une question de philosopie... :wink:
 
WRInaute discret
fandecine a dit:
Là mon coco, on ne doit pas parler de lamême chose. avant la désactivation des logs d'accés sur un de mes serveurs le fichier logs d'accés bien qu'optimisé, dépassait allégrement le Go et lors de la rotation, le serveur était à plat! Je répette donc que cela dépend du trafic. Dans le cas que je site, prés de 350000 pages/jour donc logs d'accés enorme et innexploitables. (Si, si je maintiens :D ) donc desactivation et depuis, le serveur se porte à merveille!

Enfin, je ne vais pas batailler des heures pour une question de philosopie... :wink:

Je ne veux pas polémiquer dessus. Il est inutile de sortir des chiffres pour prouver quoique ce soit, ils seront toujours en deça de ce que nos serveurs traitent :mrgreen:

Je trouve dommage de supprimer les logs pour "optimiser son serveur dédié".
 
WRInaute discret
Perso j'ais des giga de log qui m'ennuis plus qu'autre chose , le seul qui m'interesse et qui est important c'est error_log .

J'aimerais desactiver access_log mais ...

CustomLog /dev/null combined
on mets cette ligne a la place de quoi ??

et 2 eme question ca désactive pas error_log au passage au moins ?
 
WRInaute impliqué
Pour avoir bossé en tant qu'hotliner pour un hébergeur, je peux vous dire que les logs sont bien utiles, car c'est bien ceux-ci que demande la police en cas de problème.

Une rotation des logs permet de garder un histoire. Concrètement, les données ne sont pas effacée, mais déplacée.

Une rotation journalière, ça passe sans problème pour de gros serveurs, étant donné que ces opérations font appel directement à des exécutables. A mon avis, l'optimisation passe d'abord par analyser quelles sont les données critiques d'un système.

Passer sous MySQL 5 permet dans un premier temps d'utiliser des fonctinnalités comme "SELECT SQL_CACHE" qui mets en cache le résultat d'une requête dans la mémoire vive, en surveillant si d'autres requêtes ne viennent pas modifier le résultat bufferisé. C'est une gestion des données intéressantes permettant un accès rapide aux données (temp d'accès ram < temps d'accès disque), tout en gardant une bonne synchro des données.

On peut également songer à passer certaines tables dont le contenu n'est pas très important (sessions, stats) en type HEAP (ou Memory selon les versions): le contenu est alors stocké dans la RAM, le temps d'accès est accéléré, mais en cas de plantage ou de redémarrage, les données sont perdues.

Pour optimiser un serveur, il n'est nul besoin vraiment de trouver des astuces, mais de se poser les bonnes questions et d'y donner de bonnes réponses.
 
WRInaute impliqué
Sur un serveur avec un trafic assez élevé, 150Mo ça passe, jusque 230Mo également. Au dela, ça lague mais uniquement en pics.

Une solution intelligente serait d'analyser les statistiques de fréquentation pour forcer une rotation dans une zone creuse préccédent une zone de forte activité.

Rien ne sert d'avoir un serveur optimisé tout le temps. Il doit être optimisé pour les périodes de forte fréquentation. Le but est de fluidifier la charge et le trafic.
 
WRInaute discret
comment dois on specifier a apache de ne pas logger images et css ? Merci


sinon en quoi un gros fichier de logs est inutilisable, si tu utlise les outils pour ou que tu bricole un peu de bash , perl ou python tu pourras trouver les infos que tu veux.
 
WRInaute occasionnel
Article intéressant et recommandation par la même occasion.

Une bonne optimisation de son serveur est importante pour faire tourner son site web.
 
Nouveau WRInaute
Externaliser tout ce qui est possible cela soulagera votre serveur d'autant. Pour les stats, il suffit de s'abonner à xiti ou estat (gratuit).

Et Google Analytics! (Ex-version Urchin), pour moi y'a rien à dire, c'est excellent.
 
WRInaute passionné
Bourriquet a dit:
Sur un serveur avec un trafic assez élevé, 150Mo ça passe, jusque 230Mo également. Au dela, ça lague mais uniquement en pics.

Une solution intelligente serait d'analyser les statistiques de fréquentation pour forcer une rotation dans une zone creuse préccédent une zone de forte activité.

Rien ne sert d'avoir un serveur optimisé tout le temps. Il doit être optimisé pour les périodes de forte fréquentation. Le but est de fluidifier la charge et le trafic.

Je suis tout à fait d'accord mais comment faire ? :lol:
80% du temps, mon serveur n'a aucun problème... mais lorsqu'aux heures pleines, de 400 à 550 personnes sont connectées en même temps... et bien ça ralentit fortement...
Je vais créer un topic pour essayer demander quelques demandes d'optimisation spécifiques à mon serveur et site...
 
WRInaute accro
Funkizback a dit:
Et Google Analytics! (Ex-version Urchin), pour moi y'a rien à dire, c'est excellent.
-1
Je test depuis une semaine PhpMyVisites et je dois dire que les résultats qu'il me donne sont tout à fait étonnants par rapport à Analytics...
Mais bon on ne dénonce pas les sites sur WRI! :lol: :lol: :lol:
 
WRInaute passionné
Excellent ce topic (merci à toi fandecine) !
Une tâche en particulier m'intéresse fortement.
L'automatisation pour la base de données avec CRON.
Mais voilà je n'ai encore jamais utilisé ce programme donc qué que quoi dont mettre comme ligne de syntaxe ou autre pour dire à Mysql "OPTIMIZE TABLE `bidule` " etc... à telle heure avec CRON ?
 
WRInaute passionné
david96 a dit:
Excellent ce topic (merci à toi fandecine) !
Une tâche en particulier m'intéresse fortement.
L'automatisation pour la base de données avec CRON.
Mais voilà je n'ai encore jamais utilisé ce programme donc qué que quoi dont mettre comme ligne de syntaxe ou autre pour dire à Mysql "OPTIMIZE TABLE `bidule` " etc... à telle heure avec CRON ?

Bah! tu fait un script PHP pour lancer la commande OPTIMIZE et tu le met en Cron .

Comme je suis un gros feinéant :wink: je te donne une URL: http://matthieu.developpez.com/execution_periodique/

voilou!
 
WRInaute discret
Une autre optimisation possible :
- Utiliser lighttpd au lieu d'apache pour les images, les contenus statiques (css,..) et les fichiers.

Ca permet de tenir la charge même si vous avez beaucoup de connexion simultanée et des contenus de taille importante (Video,...).
 
WRInaute impliqué
Si vous utilisez les fichiers .htaccess, mettez cette directive à none pour tous les répertoire de votre serveur puis utilisez les section <Directory> pour n'activer les fichiers .htaccess uniquement ou cela est nécessaire.

J'aimerai bien savoir comment tu fait dans ce cas ?

si je fait par exemple

<Directory /home/web/>
AllowOverride None
</Directory>

<Directory /home/web/monsite.com/www>
AllowOverride All
</Directory>

le pb c'est qu'en suite le AllowOverride se propage dans les repertoires de www ... J'aimerai bien activer AllowOverride uniquement dans www ...

Merci !
 
WRInaute impliqué
Désolé Fandeciné, mais il est obligatoire de conserver les logs d'accès pendant 12 mois.
En cas de requête judiciaire tu est dans l'obligation de les fournir (par exemple, suite à la plainte d'un membre d'un forum pour propos diffamatoire, ce n'est qu'un exemple).
 
WRInaute passionné
LeMulotNocturne a dit:
Désolé Fandeciné, mais il est obligatoire de conserver les logs d'accès pendant 12 mois.
En cas de requête judiciaire tu est dans l'obligation de les fournir (par exemple, suite à la plainte d'un membre d'un forum pour propos diffamatoire, ce n'est qu'un exemple).

C'est le vieux serpent de mer qui ressort !

Un éditeur de site internet n'est pas tenu de conserver les logs d'accés à son site.

J'ai trouvé cette news récente sur le site de la CNIL : http://www.cnil.fr/index.php?id=2398&news[uid]=522&cHash=fa9b3406f6

Mais comme cela n'était pas clair, j'ai appelé le service de juridique de la CNIL qui m'a effectivement confirmé qu'en tant qu'éditeur de site, je n'avais aucune obligation légale à l'heure actuelle de conserver les logs d'accès à mon site internet.

voilou ! :D

PS: ce qui n'ont pas confiance peuvent appeler la CNIL (service juridique) : 01.53.73.22.22
 
WRInaute impliqué
Pour Robinson :

Tu as essayé de jouer sur des options comme MaxClient, MaxRequestsPerChild, KeepAlive, etc. ?

N'oublie pas aussi si tu utilises MySQL que lui aussi a des variables de configuration sur lesquelles il est possible de jouer (/et/mysql/my.cnf sous debian normalement)...

Tu peux aussi utiliser un système de cache (comme jpcache) pour accélérer les temps de traitement sur les heures "pleines", qui se vide automatiquement uniquement en heure creuse...
 
WRInaute passionné
Bourriquet a dit:
Pour Robinson :

Tu as essayé de jouer sur des options comme MaxClient, MaxRequestsPerChild, KeepAlive, etc. ?

N'oublie pas aussi si tu utilises MySQL que lui aussi a des variables de configuration sur lesquelles il est possible de jouer (/et/mysql/my.cnf sous debian normalement)...

Tu peux aussi utiliser un système de cache (comme jpcache) pour accélérer les temps de traitement sur les heures "pleines", qui se vide automatiquement uniquement en heure creuse...
Rho c'est gentil de ton aide mais mon message a déjà un an :lol:
 
WRInaute impliqué
fandecine a dit:
LeMulotNocturne a dit:
Désolé Fandeciné, mais il est obligatoire de conserver les logs d'accès pendant 12 mois.
En cas de requête judiciaire tu est dans l'obligation de les fournir (par exemple, suite à la plainte d'un membre d'un forum pour propos diffamatoire, ce n'est qu'un exemple).

C'est le vieux serpent de mer qui ressort !

Un éditeur de site internet n'est pas tenu de conserver les logs d'accés à son site.

J'ai trouvé cette news récente sur le site de la CNIL : http://www.cnil.fr/index.php?id=2398&news[uid]=522&cHash=fa9b3406f6

Mais comme cela n'était pas clair, j'ai appelé le service de juridique de la CNIL qui m'a effectivement confirmé qu'en tant qu'éditeur de site, je n'avais aucune obligation légale à l'heure actuelle de conserver les logs d'accès à mon site internet.

voilou ! :D

PS: ce qui n'ont pas confiance peuvent appeler la CNIL (service juridique) : 01.53.73.22.22


Raaaaaaahhhhh !!! :wink: On parle de serveur dédié.
Il n'est pas question de tes obligations en tant qu'éditeur, mais de tes obligations en tant qu'hébergeur. Avec un dédié, l'hébergeur, c'est toi (cf. les CGV de ton contrat de loc dedié).
 
WRInaute passionné
cdpdf : l'article est intéressant, mais concerne bien plus les méthodes de développement que le serveur dédié en lui même. Ormis le cache d'opcode peut être...
 
Discussions similaires
Haut