Como o log do apache2 funciona para várias instâncias

2

O apache2 suporta log sincronizado para access_log e error_log? Como o log no apache2 funciona para várias instâncias? Será que vai conseguir bloquear a condição se várias instâncias gravarem ao mesmo tempo?

Obrigado antecipadamente.

    
por user111757 23.02.2012 / 20:20

4 respostas

2

Simplificando, não, o próprio Apache não bloqueia arquivos - no mínimo, esse é um resultado de desempenho e recurso. No máximo, é um potencial impasse esperando para acontecer. Como pode haver centenas de segmentos em uma configuração normal disputando o bloqueio, você verá muita fome acontecendo.

A resposta mais complicada é que você pode certamente tentar implementar isso sozinho. Ou seja, você pode usar algo como registros enviados para passar um script intermediário que manipula o bloqueio.

A resposta certa é, por que você precisa colocá-los no mesmo arquivo? Se eles hospedam os mesmos dados, eles devem ser o mesmo servidor - dividi-lo em dois superintendentes separados (isto é, o httpd de propriedade da raiz) e vários filhos para cada um (ou seja, httpd de propriedade do apache) não comprarão nada ; se alguma coisa, os recursos adicionais necessários para lançar recursos diminuirão o desempenho. E se eles não estiverem hospedando o mesmo conteúdo, eles não devem estar registrando as coisas no mesmo log.

Se você realmente precisa do conteúdo a ser mesclado, há muitas coisas por aí que podem mescla o conteúdo de dois arquivos de log do Apache .

Espero que isso ajude!

    
por 23.02.2012 / 22:04
2

Does apache2 support synchronized log for access_log and error_log?
Não. Como outros apontaram, não há bloqueio ou mecanismo para garantir que as entradas sejam gravadas em sincronia com quaisquer dois arquivos de log do Apache. No entanto, os eventos SÃO com registro de data e hora (para que você possa corresponder um evento error_log ao evento access_log que o acionou) e existem ferramentas para mesclar os logs, se isso for o que você deseja fazer .

How the log in apache2 works for multiple instances?
Consulte a seção do manual do Apache sobre registro , particularmente a subseção em hosts virtuais .
Basicamente, a resposta é "Funciona, mas você configura dentro dos limites descritos no manual". O conselho que o MrTuttle deu a você (use um registro separado para cada site, e certamente registros separados para instâncias httpd separadas!) É um conselho muito bom - sugiro segui-lo ...

Will it get to lock condition if multiple instances write at the same time?
Não (veja acima), mas você pode experimentar alguns eventos escritos fora de ordem no arquivo de log sob extremo carregamento. (Eu vi uma vez, e o site estava usando logs canalizados, então é possível que o programa que estava manipulando os logs simplesmente tenha perdido a cabeça ...)

    
por 23.02.2012 / 22:27
1

Não, você não receberá uma condição de bloqueio. Os logs do Apache não são abertos com um bloqueio exclusivo (não sei se isso é verdade no Windows).

Dito isso, use registros separados para sua própria sanidade.

    
por 23.02.2012 / 22:04
0

Vários processos apache da mesma instância podem gravar nos mesmos arquivos de log sem qualquer preocupação, porque as API fundamentais do IO garantem que isso é seguro (não perderá dados nem intercalará) quando um descritor de arquivo é compartilhado entre N processos ou encadeamentos.

    
por 24.02.2012 / 13:58