3 votes

Comment la journalisation d'apache2 fonctionne-t-elle pour des instances multiples ?

Apache2 supporte-t-il les journaux synchronisés pour access_log et error_log ? Comment le journal d'apache2 fonctionne-t-il pour des instances multiples ? Est-ce qu'il y aura une condition de verrouillage si plusieurs instances écrivent en même temps ?

Merci d'avance.

2voto

Andrew M. Points 10852

Pour faire simple, non, Apache lui-même ne verrouille pas les fichiers - à tout le moins, il s'agit d'une perte de performance et de ressources. Au mieux, c'est un blocage potentiel qui attend de se produire. Comme il peut y avoir des centaines de threads dans une configuration normale qui se disputent le verrou, vous verrez beaucoup de famine se produire.

La réponse la plus compliquée est que vous pouvez certainement essayer de le faire vous-même. C'est-à-dire que vous pouvez utiliser quelque chose comme bûches canalisées pour leur passer un script intermédiaire qui gère le verrouillage.

La bonne réponse est : pourquoi faut-il les mettre dans le même fichier ? S'ils hébergent les mêmes données, ils doivent être sur le même serveur - le diviser en deux superviseurs distincts (c'est-à-dire un httpd appartenant à root) et plusieurs enfants pour chacun (c'est-à-dire un httpd appartenant à apache) ne vous apportera rien ; au contraire, les ressources supplémentaires nécessaires pour lancer les ressources diminueront les performances. Et s'ils n'hébergent PAS le même contenu, alors ils ne devrait pas d'enregistrer des choses dans le même journal.

Si vous avez absolument besoin que le contenu soit fusionné, il existe de nombreux outils qui peuvent fusionner le contenu de deux fichiers journaux Apache .

J'espère que cela vous aidera !

2voto

voretaq7 Points 78924

Does apache2 support synchronized log for access_log and error_log?
Non. Comme d'autres l'ont souligné, il n'y a pas de verrouillage ou de mécanisme permettant de s'assurer que les entrées sont écrites de manière synchronisée dans deux fichiers journaux apache. Les événements SONT Cependant, ils sont horodatés (afin que vous puissiez faire correspondre un événement error_log à l'événement access_log qui l'a déclenché), et des outils existent pour fusionner les journaux si c'est ce que vous voulez faire.

How the log in apache2 works for multiple instances?
Voir le Section du manuel Apache sur la journalisation notamment la sous-section sur les hôtes virtuels .
En gros, la réponse est "Il fonctionne comme vous le configurez, dans les limites décrites dans le manuel". Le conseil que MrTuttle vous a donné (utiliser un journal séparé pour chaque site, et certainement des journaux séparés pour des instances httpd séparées !) est un très bon conseil - je vous suggère de le suivre...

Will it get to lock condition if multiple instances write at the same time?
Non (voir ci-dessus), mais vous mai certains événements sont écrits dans le désordre dans le fichier journal sous le nom de extrême charge. (J'ai vu cela UNE SEULE fois, et le site utilisait des journaux en ligne, il est donc possible que le programme qui gérait les journaux ait simplement perdu la tête...).

1voto

MrTuttle Points 1166

Non, vous n'obtiendrez pas de condition de verrouillage. Les journaux d'Apache ne sont pas ouverts avec un verrou exclusif (je ne sais pas si c'est vrai sous Windows).

Cela dit, utilisez des journaux séparés pour votre propre santé.

1voto

covener Points 1665

Plusieurs processus apache d'une même instance peuvent écrire dans les mêmes fichiers journaux sans aucun souci, car les API d'E/S fondamentales garantissent que cela est sûr (ne perdra pas de données et ne s'entrelacera pas) lorsqu'un descripteur de fichier est partagé entre N processus ou threads.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X