| Version 1 (modified by squidly, 15 months ago) (diff) |
|---|
Nombre de descripteurs
le nombre de descripteurs ouvert peut grandement influer sur les performances du système. Le fait d'avoir une directive de log dans chaque vhost force apache à utiliser des descripteurs différents pour chaque vhost. Sur un serveur hébergent de nombreux site, on arrive vite dans les limites de cette techniques, vu que le nombre de descripteur n'est pas extensible à l'infini. Même si des commande comme "ulimit" permettent d'augmenter les limites attribué aux processus, cette augmentation n'est pas infini, et entraîne donc a termes des gros problème de performance.
Solutions possibles
Deux solution sont possible pour palier a ce problème: -utiliser un descripteur de fichier global au niveau d'apache. -utiliser les piped_logs
Descripteur de fichier global.
Au lieu de faire disposer chaque vhost de son descripteur de fichier personnel, dans le cadre d'alternc il peut être intéressant d'utiliser un fichier de log global déclaré dans la conf apache générale. Ce fichier de log peut ensuite être parsé très simplement en fonction des vhost par l'utilitaire split-logs présent dans apache. Le script retourne donc en sortie des fichiers de logs pour chaque virtual hosts. Une fois séparé les fichiers sont clos, ce qui leur donne donc la propriété de ne pas utiliser en permanences des descripteurs de fichiers. Il peuvent donc être déplacé sans soucis. L'inconvénient majeur est que du coup ces fichiers ne sont pas mis a jours en temps réel, mais a chaque fois que le fichier principal est splitté. Cette solution permet donc de pallier le problème du nombre de descripteur ouvert par apache.
Les piped_logs
Le concept des piped_logs est d'envoyer les logs directement à un script qui se charge du traitement, donc d'écrire les logs dans les fichiers concerné. Le fait de passer les logs a uncaractères interditss permets d'obtenir la meilleure souplesse puisque l'on peut écrire un script faisant à peu près tous ce qu'on veut des logs. Les logs étant directement passé aucaractères interdits on évite d'avoir à parser un fichier global bien que le concept soit similaire.
Centralisation
Il serait possible de le faire avec syslog-ng mais le nombre important de log que peut envoyer un alternc peut être tellement conséquent que le programme pourrait bloquer et donc d'une pas loguer les autres services.
On peut également se servir d'un piped log qui permettrais d'écrire sur une partition ou un serveur spécifique. Apache intègre d'ailleurs uncaractères interdits rotalelogs : Cecaractères interdits servant de a recevoir les logs peut les écrire dans des dossiers spécifiques en fonctions de divers para mètre ( notamment la date )
