A questão é sobre os logs de acesso e erro, principalmente com vários hosts (instâncias do apache instaladas em mais de um servidor) e manter os logs centralmente em um sistema de arquivos de rede.
O apache fecha cada arquivo de log após cada gravação?
Se sim, em um servidor ocupado hospedando muitos sites, cada um com seu próprio log, isso parece ser um potencial gargalo de desempenho?
Se Não, qual é a solução ao ter vários servidores gravando em um único local de log em um sistema de arquivos de rede?
Use a fonte, está em: https://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/loggers/mod_log_config.c?view=markup
Você pode ler a partir dele:
Esse tipo de dicas que é aberto apenas uma vez. Na verdade, se você observar o código, ele é aberto cedo, na inicialização, e nunca fechado, por motivos óbvios de desempenho.
Absolutamente nunca faça isso, por duas razões. Primeiro, não registre remotamente dessa maneira. Registre localmente (e envie arquivos de log separadamente, você pode alternar de hora em hora, por exemplo) ou use os daemons apropriados,
syslog
sabe por padrão como enviar conteúdo de log por UDP (ou TCP), assim como soluções mais recentes. Não monte um disco remoto e escreva arquivos de log nele, isso vai matar o desempenho e criar um monte de problemas (especialmente se você quer dizer remoto como em "NFS").E mesmo que localmente, cada aplicativo deve logar em seu próprio arquivo de log, não ter vários aplicativos logando no mesmo arquivo, isso é obrigado a criar todos os tipos de condições de corrida, sobrescrever, etc. O próprio Apache é um aplicativo, mesmo que seja bifurcado , mas se você tiver 2 Apaches rodando separadamente no mesmo host com configurações diferentes, cada um deles deverá registrar em seus próprios arquivos de log.
Ou veja o recurso Apache para logar em pipes, mas isso também tem desvantagens.
AFAIK você não pode ter vários servidores web Apache simultaneamente gravando no mesmo arquivo de log.
Para clusters, você permite que cada nó grave em seu próprio arquivo de log e, em seguida, faça algum pós-processamento para mesclá-los, ou permite que o Apache gere eventos de syslog, envie-os para um servidor syslog central onde você pode mesclá-los em um único arquivo ou você use uma solução de agregação de log como ELK Stack, Graylog, Splunk e/ou outras para enviar eventos de log de todos os nós do cluster para um único banco de dados de big data