Title: Optimisation des serveurs pour TYPO3
1Optimisation des serveurs pour TYPO3
- TYPO3 Summer University 2009 - ANNECY
Date 24/06/2009
2Quoi ?
- Installer uniquement le nécessaire
- Apache un serveur qui doit être adapté en
fonction des besoins - Tunning du serveur
- Linux VS Windows
- Utilisation de proxy / cache
- Mise en place de cluster Apache
- Optimisation Mysql
- Mise en place dun serveur dédié avantage /
inconvénient - Utilisation dun cluster NDB
- Optimisation de TYPO3
- le cache, les requêtes SQL et Real URL
- Questions / Réponses
3Installer uniquement le nécessaire
- 1er règle dor plus de services sont installés,
plus cela consomme - Installer les packages nécessaire au bon
fonctionnement de TYPO3 - - Packages Apache 2 / PHP 5.2.x / PHP5 Cli /
Mysql-server-5.0 - - Packages PHP php5-mysql / php5-gd
- - Applications XPDF / CATDOC / IMAGEMAGIX
- - Optionnel SSH ou FTPD / un éditeur VIM ou
autres / un serveur de mail sortant ou un MTA
(postfix, cirus, nullmailer ....) - NOTES Certains autres packages peuvent être
nécessaire pour le bon fonctionnement des
applications php5-ldap / php5-curl / .... - Eviter de faire faire au serveur plusieurs choses
- - éviter dinstaller les outils de supervision
(nagios / cacti) - déporter le sur un autre
serveur - - éviter autant que faire se peut les interfaces
graphiques (sauf windows et Mac) - 2ème règle dor éviter les installations
packagées des OS
4Apache un serveur qui doit être adapté en
fonction des besoins
- Apache est un serveur qui à la capacité dêtre
adapté en fonction des besoins - Site dédié aux connexions bas débit
- Site à fort services interactifs avec
linternaute (commentaires / forum / recherche) - Site de contenus (institutionnel) avec un gros
traffic - ect...
- Il est donc possible de configurer Apache en
fonction de son site. Une bonne connaissance des
objectifs en termes - de trafic,
- et de fonctionnalités sous TYPO3
- est nécessaire.
5Tunning du serveur 1/3
- Sous Linux / Unix / MAC comme sous Windows,
lensemble des paramètres que nous allons aborder
permettent une optimisation du serveur en
fonction de ce que lon veut lui faire faire. - Optimisations générales
- timeout Valeur par défaut constatée 300 /
valeur conseillée 40. Cette valeur peut être
descendu jusquà 10, mais attention aux
connexions de type RTC ou EDGE. Ce paramètre
défini le délai dinnactivité dune connexion
entrante avant que celle-ci ne soit considérée
comme annulée. Un client WEB classique ne doit
pas dépasser 600 secondes (5 minutes) entre le
début de la transaction WEB et la fin de la
demande. - Note Ceci nimpacte le POST de fichiers
volumineux puisque la totalité de la valeur du
timeout est appliquée entre chaque paquet de la
transaction TCP. - KeepAlive Valeur par défaut constatée On /
valeur conseillée On. Ce paramètre permet au
client dutiliser plusieurs fois la même
connexion TCP pour effectuer de multiples
requêtes. - Par exemple une contenant plusieurs images
pourra être récupérée entièrement en minimisant
le nombre de connexion émisse au serveur pas le
client. - Inconvénient Ceci présente un inconvénient pour
les serveurs très chargés car le serveur et le
client maintienne la connexion ouverte pendant
quelques secondes une fois laffichage de la page
terminé, cela dans lattente dune transaction.
Cela peut amener le pool de connexion ouverte à
augmenter ce qui peut engorger le serveur.
6Tunning du serveur 2/3
- KeepAliveTimeOut Valeur par défaut constatée
15 / valeur conseillée 5 (2 pour un serveur très
chargé, si on constate que le nombre de processus
apache devient trop important gt 200). Ce
paramètre définit le temps ou une connexion reste
ouverte après la fin de la dernière transaction
dans lattente dune prochaine. Ce paramètre na
que du sens si le KeepAlive est à on. - Note De manière générale, 5 secondes dattente
entre deux requêtes pour une même page est
largement suffisant, cela permet de libérer des
connexion pour les autres clients. - StartServers Valeur par défaut constatée 5 /
valeur conseillée 25. Ce paramètre défini le
nombre de serveur Apache lancé et prêt à répondre
aux requêtes clients au démarrage du service. A
chaque nouveau client qui se connecte au serveur,
un processus libre doit répondre. Si aucun
processus nest libre, le service Apache en
démarre et lui affecte une connexion. Ceci
diminue drastiquement les temps de réponse du
serveur. - Note La mémoire occupée par un processus
fraîchement démarré est assez négligeable car les
librairies sont mutualisées entre les processus.
Démarrer plusieurs serveurs nest donc pas un
facteur de surcharge de la mémoire. - MinSpareServers Valeur par défaut constatée 5
/ valeur conseillée 20. Afin daméliorer les
performances, Apache propose un système de
processus libre (en attente de connexion client).
Ce paramètre définit le nombre minimum de
processus libres à chaque instant. Si des clients
se connecte, diminuant ainsi le nombre de
processus ne pouvant traiter de requêtes et le
portant sous la valeur indiqué, le service Apache
démarre des processus en prévision de futures
requêtes.
Â
7Tunning du serveur 3/3
- MaxSpareServers Valeur par défaut constatée
10 / valeur conseillée 30. Lorsque les clients
terminent leurs requêtes, ils libèrent des
processus (après le KeepAliveTimeOut, valeur en
seconde). Ce paramètre défini le nombre maximum
de serveur(s) inactif(s) devant rester charger?
Si la déconnexion de client porte le nombre de
processus inactif(s) au dessous de la valeur de
ce paramètre, le serveur arrête alors le nombre
de processus pour retomber à la valeur spécifiée.
- Note Ceci libère de la mémoire car les
processus ayant répondu à des requêtes occupent
plus de mémoire que les processus nouvellement
créés. - MaxClients Valeur par défaut constatée 256 /
valeur conseillée 256. Ce paramètre défini le
nombre maximum de processus pouvant être lancés
simultanément. - Note Si 256 processus sont lancés
simultanément, le service Apache ignorera les
nouvelles requêtes de clients ceux-xi auront
alors pour résultat une page derreur. Pour les
machines ayant peu de ressources (CPU et/ou
mémoire), ce paramètre permet de limiter la
charge et déviter de voir la swap utilisée, ou
davoir des processus saturant rapidement le CPU. - MaxRequestPerChild Valeur par défaut
constatée 0 / valeur conseillée 1000. Cette
directive quau bout dun certain nombre de
requêtes servies, un processus doit être arrêté.
La valeur 0 indique que le nombre de requêtes
nest pas un critère d'arrêt de processus. - Note Il est toujours préférable de renouveler
de temps en temps les processus cela permet de
saffranchir déventuel bogue du moteur Apache ou
PHP qui provoquerait des fuites de mémoires. - Dernières notes La 1er règle dor énoncée tout
à l'heure est valable également pour les modules
liés à Apache comme par exemple mod_cgi ou
mod_spelling, mod_actions ect....
Â
8Linux VS Windows
- Quelques chiffres plus de 70 des serveurs WEB
toutes technos confondues sont basés sous des
LINUX / UNIX (source Framasoft). - 79,81 des TYPO3 tourne sous un serveur LINUX
(source infoglobe) - Apache représente 66 des serveurs WEB (source
google) - Les liens symboliques ne sont supportés quà
partir de Windows server ?? (Vista OK) - La gestion des .htaccess sous Apache Windows
- Windows et IIS ne supporte pas la gestion de
réécriture dURL sans les règles ISAPI
A ce jour, les tests réalisés, chez divers
clients prouvent que la montée en charge dun
TYPO3 sur environnement LAMP est meilleur que
sous un environnement WAMP. Cependant dans le
cadre dIntranet ou le trafic est maîtrisé, dans
le cadre de développement (attention au passage
en OS de production) Windows server répond à un
certain besoin
9Utilisation de serveur proxy cache 1/2
- Dans le cas de grandes charges serveur, générés
par un fort trafic, lutilisation dun proxy peut
être une bonne alternative afin de décharger le
ou les serveurs APACHE. - Avantages
- Déporter la charge Apache sur les serveurs Cache
/ Proxy - Utilisation doptimisation automatique par
exemple lapplication SQUID est capable de
déterminer les pages les plus demandées et de les
faire monter dans un cache mémoire les moins
demandées seront quand à elle dans un cache sur
disque dur - Support dune forte charge
- Montage en cluster simplifiée
- Inconvénients
- Réglage de TYPO3 pour quil modifie son header
- Développement spécifique pour le vidage des
caches lors dune mise à jour. - Gestion de listes dexclusions dURL
(fonctionnalités interactives / formulaires /
ect...)
10Utilisation de serveur proxy cache 2/2
Serveur(s) APACHE
Les serveurs SQUID interroge le serveur Apache
sil ne possède pas la page (Création ou cache
vidé)
Proxy SQUID
Proxy SQUID
L'internaute interroge directement le serveur
Apache pour les pages exclues du cache proxy
L'internaute interroge directement le ou les
serveurs SQUID pour les pages cachés
11Mise en place de cluster Apache 1/2.
- Une mise en place complexe faisant appel à
plusieurs concept - La répartition des flux réseaux (DNS Roud Robin)
- La surveillance des services (HEARTHBEAT)
- Le système de fichier en mode coopératif ou à
accès concurrentiel - Gestion des temp de TYPO3 séparé
(/typo3temp/temp_) - Utilisation de filer déporté (baie SAN / NAS
/ISCSI) ou synchronisation des données - Une maintenance plus complexe
- Surveillance des services et des serveurs
- en cas dun crash serveur, la charge se déporte
sur les serveurs restants (dégradation de service
ou écroulement en cascade) - Capacité dintervention rapide en cas de crash du
système - Attention Ne pas confondre cluster de
répartition de charge et cluster de haute
disponibilité les mécanisme ne sont pas les même.
12Mise en place de cluster Apache 2/2.
Exemple dune architecture en cluster avec
répartition de charge
Filer SAN avec Système de fichier à accès
concurrentiel
SGBD
Apache 1
Apache 2
Apache 3
DNS Round Robin
13Optimisation MySql
- MySql est de manière simple difficilement
optimisable, en effet seulement quelques
paramètres peuvent être modifié. - De plus les grandes optimisations sont possibles
en re-compilant les sources. - Cependant quelques règles simples permettent de
gagner des performances - Placer des index pertinent
- Utiliser loptimisateur intégré à Mysql5 -
optimizer_prune_level (indique le niveau
doptimisation des requêtes valeur 0 ou 1)-
optimizer_search_depth (indique la profondeur
danalyse Valeur de 0 à 4, 0détermination
automatique) - Bien régler les valeurs suivantes
- key_buffer_size
- table_cache
- Note Importante Toutes les optimisations MySql
ne pourront pallier à des requêtes SQL mal
écrite chaque développeur doit optimiser ses
requêtes.
14Mise en place dun serveur dédié avantage /
inconvénient
- Avantages
- Répartition de la charge
- Meilleurs performances sur des grosses requêtes
- Inconvénient
- Gestion de deux machines physiques
- Saturation réseaux
- temps de latence due au protocole TCP/IP (TTL)
- La mise en place dun serveur dédié Mysql est
dans la plupart des cas une optimisation
intéressante. Attention toutefois à mettre un
lien réseau privilégié entre le serveur WEB
Apache et le serveur MySql
15Utilisation dun cluster NDB 1/2
- Le cluster NDB permet de répartir de la charge
sur plusieurs noeuds de base de donnée (noeud
Mysql et noeud de données) et de faire de la
réplication maître/esclave - esclave/maître. Le
tout est contrôlé par des manageurs.
Le schéma théorique présenté ci dessus peut être
simplifié dans la pratique. on peut installer sur
le même serveur le noeud Mysql et le noeud de
données.
16Utilisation dun cluster NDB 2/2
Sous TYPO3, on peut donc imaginer facilement
larchitecture suivante.
NDB_MGM
Toutes les tables sont de type NDB sauf les
tables cache_ et évetuellement index_ et
tx_realurl_
Mysql data nodes
Mysql data nodes
Deux manageurs pour éviter le crash en cas de
panne matériel
NDB_MGM
Apache 1 TYPO3
Apache 2 TYPO3
Deux installations de TYPO3 identiques
DNS
DNS en mode Round Robin
17Questions / Réponses