Archives pour l'étiquette Debian

Calculer l’utilisation mémoire des processus Apache

Snippet pour calculer la consommation moyen de mémoire des processus apache

ps aux | grep apache | grep -v pts | awk '{ tot += $6; procs += 1; print $2,$6,$11 } END { print "TOTAL: ",tot,"/",procs,"=",tot/procs }'

Vous obtenez en sortie la moyenne sous cette forme

4231 50212 /usr/sbin/apache2
4265 53588 /usr/sbin/apache2
4275 52236 /usr/sbin/apache2
4307 50760 /usr/sbin/apache2
4340 54164 /usr/sbin/apache2
4370 48952 /usr/sbin/apache2
4372 42916 /usr/sbin/apache2
4420 19940 /usr/sbin/apache2
4421 44568 /usr/sbin/apache2
4446 8180 /usr/sbin/apache2
4448 7620 /usr/sbin/apache2
4449 7600 /usr/sbin/apache2
4450 7604 /usr/sbin/apache2
4451 7604 /usr/sbin/apache2
4452 7604 /usr/sbin/apache2
4871 18584 /usr/sbin/apache2
TOTAL: 482132 / 16 = 30133.2

Xen Erreur : Impossibilité de mettre la machine virtuel à l’heure

Impossible de mettre les machines virtuel à l’heure indépendamment de votre dom0 ?
Le serveur physique qui héberge votre machine virtuel n’est pas à l’heure ?
Le serveur domO qui héberge votre DomU est au antipode ou au USA et vous souhaitez avoir l’heure française ?

Ajouter :

xen.independent_wallclock = <span style="color: #000000;">1</span>

au fichier /etc/sysctl.conf. Puis lancer la commande suivante

sysctl -p

Reconfigurer la zone de fuseau horaire en choisissant Europe / Paris

dpkg-reconfigure tzdata

Relancer ntpdate

ntpdate fr.pool.ntp.org

Et voila

Voici.fr preuve par l’image de l’intérêt de l’optimisation web cache et des performance des reverses proxys

Suite à mes articles sur la configuration eZ publish pour l’utilisation des caches web, sur l’optimisation des reverse proxy squid j’ai tenté de faire la démonstration de l’intérêt de l’ optimisation web cache et des performance des reverses proxys. Je vais apporter quelques preuve de plus dans cet article.

Tenir les versions des logiciels à jours

L’optimisation de ces web cache et la performance des reverses proxys passe tout simplement pas la mise à jour régulière du système et des logiciels. Dans l’exemple ci dessous le gains de performance est flagrant entre une configuration Debian Sarge avec Squid 2.5 et une configuration Debian Etch avec Squid 2.6. Au mois d’octobre 2008 le taux d’utilisation du cpu par le système à chuté, un goulot d’étranglement à été supprimé.

Squid de Sarge a Etch

Soigner la configuration eZ et apache pour squid

Suite à la mort de Michael Jackson Gala.fr et principalement Voici.fr ont connu un très fort pic de charge. Durant cette épisode d’audience intense nous avons poussé en production différente optimisation que nous avions précédemment préparé. Ces optimisations porte sur la configuration de eZ Publish 4 et de Apache pour l’utilisation des caches web. L’effet principale étant obtenue en allongeant le temps de rétentions des images et en instaurant la compression pour les fichiers css et javascript.

Squid Modif conf

Affiner la configuration système des serveurs squid

Une configuration optimum des squid passe également par une adaptation du système à leur mission de reverse proxy tel que nous l’avons réalisé récemment. Le résultat est la et guère discutable pour un charge CPU légèrement supérieur nous desservons plus de client et stockons plus d’objet ce qui conduit à une plus faible sollicitation des frontaux.

Squid.Cpu.Utilisation.png
Squid.Number.Of.Client.png
Squid.Nombre.Objet.Cache.png

Karlesnine.com : Optimisation de l’hébergement d’un site Dotclear 2 pour l’utilisation des caches web

Si la gestion de cache web est pour vous une notion vague je vous invite à lire cette excellente documentation de Mark Nottingham en français.

J’ai appliqué les techniques d’optimisation un site web pour les caches web dont je parlais dans un billet précédent à mon propre blog propulsé par Dotclear 2.

Dans mon cas l’hébergement est réalisé sur un serveur Debian Lenny avec les briques suivante

  • Apache 2.2.9
  • Php5 5.2.11
  • Mysql 5.0.75

Dotclear 2 déjà optimisé

DC2 comporte déjà des optimisations pour la mise en cache des pages générées par l’application. Si vous étudier les header HTTP d’un dotclear fraichement installé avec un outil comme firebug pour firefox ou les outils développeur web de Safari ou Chrome vous pourrez en faire la constatation.

En effet DC2 utilise le framework clearbricks qui comporte quelque fonction, entre autre dans la lib php suivante

<span style="color: #000000; font-weight: bold;">/</span>dotclear<span style="color: #000000; font-weight: bold;">/</span>inc<span style="color: #000000; font-weight: bold;">/</span>clearbricks<span style="color: #000000; font-weight: bold;">/</span>common<span style="color: #000000; font-weight: bold;">/</span>lib.http.php

Les lignes, 207 a 210 de ce fichier génère les headers HTTP d’instruction de mise en cache. Personnellement souhaitant maitrisé les hearder depuis mon vhost apache j’ai mis en commentaire la ligne 209.

<span style="color: #000000;">207</span> <span style="color: #808080; font-style: italic;"># Common headers list</span> <span style="color: #000000;">208</span> <span style="color: #007800;">$headers</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> = <span style="color: #ff0000;">'Last-Modified: '</span>.gmdate<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'D, d M Y H:i:s'</span>,<span style="color: #007800;">$ts</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>.<span style="color: #ff0000;">' GMT'</span>; <span style="color: #000000;">209</span> <span style="color: #808080; font-style: italic;"># $headers[] = 'Cache-Control: must-revalidate, max-age='.abs((integer) self::$cache_max_age);</span> <span style="color: #000000;">210</span> <span style="color: #007800;">$headers</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> = <span style="color: #ff0000;">'Pragma:'</span>;

Vhost apache, interdir les .htacess

Comme je l’expliquais dans un commentaire htaccess est un tueur de performance pour le site à forte audience. Ceci n’est pas le cas de mon blog, dommage, mais je garde la bonne pratique de bloquer l’utilisation des htaccess dans mon vhost avec la directive AllowOverride None.

&lt;Directory /home/karles/public_html/&gt;            <span style="color: #00007f;">Options</span> <span style="color: #0000ff;">FollowSymLinks</span>             <span style="color: #00007f;">AllowOverride</span> <span style="color: #0000ff;">None</span>         &lt;/Directory&gt;

mod_deflate, régime pour les fichiers texte

Le mod_deflate est le module apache apportant les fonctions de compression des fichiers avant leur distribution. L’installer est des plus facile

a2enmod deflate <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache stop <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache start

Sous apache2 l’antique Mod_gzip à fait la place au mod_deflate bien moins compliqué dans sa configuration. J’ai fais le choix de compresser les fichier qui sont sous forme de texte. C’est à dire les fichiers xml, css et javascript.

&lt;IfModule mod_deflate.c&gt;             &lt;Location /&gt;                 AddOutputFilterByType DEFLATE text/xml                 AddOutputFilterByType DEFLATE text/css                 AddOutputFilterByType DEFLATE text/javascript                 AddOutputFilterByType DEFLATE text/html                 AddOutputFilterByType DEFLATE text/plain                 AddOutputFilterByType DEFLATE application/xml                 AddOutputFilterByType DEFLATE application/xhtml+xml                 AddOutputFilterByType DEFLATE application/rss+xml                 AddOutputFilterByType DEFLATE application/javascript                 AddOutputFilterByType DEFLATE application/x-javascript &nbsp;                 SetOutputFilter DEFLATE &nbsp;                 <span style="color: #adadad; font-style: italic;"># Make sure proxies don't deliver the wrong content</span>                 <span style="color: #00007f;">Header</span> append Vary User-Agent env=!dont-vary             &lt;/Location&gt;         &lt;/<span style="color: #00007f;">IfModule</span>

Attention, l’utilisation du mod_deflate avec la ligne d’instruction Header append Vary User-Agent env=!dont-vary impose d’avoir le module mod_headers et le module mod_setenvif d’activé.

mod_expires, mise en cache

le mod_expires est tout aussi facile à installé que le mod_deflate. J’ai fait le choix de tout mettre en cache au minimum 30 secondes, Le contenue html restera valide deux minutes avant qu’une nouvelle interrogation de mon serveur soit nécessaire. La mise en page avec les fichiers javascript et css j’autorise une semaine de mise en cache. Quand aux images, plus lourde et moins volatile c’est carrément un mois de validité que je souhaite.

&lt;IfModule mod_expires.c&gt;                 <span style="color: #00007f;">ExpiresActive</span> <span style="color: #0000ff;">on</span>                 <span style="color: #00007f;">ExpiresDefault</span> <span style="color: #7f007f;">&quot;access plus 30 seconds&quot;</span>                 <span style="color: #00007f;">ExpiresByType</span> text/html <span style="color: #7f007f;">&quot;access plus 120 seconds&quot;</span>                 <span style="color: #00007f;">ExpiresByType</span> text/css <span style="color: #7f007f;">&quot;access 1 weeks&quot;</span>                 <span style="color: #00007f;">ExpiresByType</span> text/javascript <span style="color: #7f007f;">&quot;access 1 weeks&quot;</span>                 <span style="color: #00007f;">ExpiresByType</span> application/x-javascript <span style="color: #7f007f;">&quot;access 1 weeks&quot;</span>                 <span style="color: #00007f;">ExpiresByType</span> application/javascript <span style="color: #7f007f;">&quot;access 1 weeks&quot;</span>                 <span style="color: #00007f;">ExpiresByType</span> image/gif <span style="color: #7f007f;">&quot;access 1 months&quot;</span>                 <span style="color: #00007f;">ExpiresByType</span> image/jpeg <span style="color: #7f007f;">&quot;access 1 months&quot;</span>                 <span style="color: #00007f;">ExpiresByType</span> image/png <span style="color: #7f007f;">&quot;access 1 months&quot;</span>         &lt;/IfModule&gt;

Conclusion

Si vous ajouter à ces technique celle d’optimisation des images pour l’accélération d’un site web vous allez sensiblement accélérer l’affichage de votre blog et par la même son référencement.

Vous pouvez également consulté la documentation du chaosklub en trois partie (1 2 3 ) qui s’attaque au même chantier mais de façon moins performante à mes yeux car utilisant les .htaccess et des scripts php de configuration des headers. Cette approche est nécessaire dans le cas ou vous le maitrisé par votre hébergement.