Estou executando o Apache 2.2.17 com o MPM do peruser no FreeBSD 8.2-RC1 no EC2 da Amazon (assim é o XEN). Foi instalado a partir de portas.
Meu problema é que, embora o Apache esteja em execução, escutando e aceitando conexões, ele não responde a nenhum deles ou os exibe no log.
Se eu fizer telnet para a porta que ele está ouvindo e digite uma solicitação HTTP:
GET / HTTP/1.1
Host: asdfasdf
E aperte enter algumas vezes, apenas fica lá ... Nada. Nenhuma resposta solicitando com um navegador também. Parece não haver nada de útil no log de erros:
[Sun Jan 09 16:56:24 2011] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sun Jan 09 16:56:25 2011] [notice] Digest: generating secret for digest authentication ...
[Sun Jan 09 16:56:25 2011] [notice] Digest: done
[Sun Jan 09 16:56:25 2011] [notice] Apache/2.2.17 (FreeBSD) mod_ssl/2.2.17
O registro de acesso fica vazio:
root:/var/log# wc httpd-access.log
0 0 0 httpd-access.log
root:/var/log#
Eu tentei com accf_http e accf_data ativados e desativados e com a configuração de estoque e minha configuração personalizada. Eu também tentei desinstalar apache22-peruser-mpm e apenas instalar o apache22 direto ... Ainda sem sorte. Eu tentei remover todas as linhas LoadModule do httpd.conf e apenas reativei as que eram necessárias para analisar a configuração. Terminou com apenas o seguinte carregado:
root:/usr/local/etc/apache22# /usr/local/sbin/apachectl -M
Loaded Modules:
core_module (static)
mpm_peruser_module (static)
http_module (static)
so_module (static)
authz_host_module (shared)
log_config_module (shared)
alias_module (shared)
Syntax OK
root:/usr/local/etc/apache22#
Mesmos resultados.
Apache é definitivamente o que está ouvindo na porta 80:
root:/usr/local/etc/apache22# sockstat -4 | grep httpd
root httpd 43789 3 tcp4 6 *:80 *:*
root httpd 43789 4 tcp4 *:* *:*
root:/usr/local/etc/apache22#
E sei que não é um problema de firewall, pois não há nada sendo executado localmente e a conexão da caixa local para 127.0.0.1:80 resulta no mesmo problema.
Alguém tem alguma ideia do que está acontecendo? Por que isso seria feito? Eu exausto toda a minha experiência em depuração. : /
Obrigado por qualquer sugestão!
EDITAR : De acordo com a sugestão de Phil Hollenback, executei um rastreamento nas chamadas do sistema. Isso é o que eu encontrei através do ktrace e da treliça.
48443 httpd CALL select(0,0,0,0,0xbf7feab4)
48443 httpd RET select 0
48443 httpd CALL gettimeofday(0xbf7feae4,0)
48443 httpd RET gettimeofday 0
48443 httpd CALL wait4(0xffffffff,0xbf7fea98,WNOHANG|WUNTRACED,0)
48443 httpd RET wait4 -1 errno 10 No child processes
48443 httpd CALL select(0,0,0,0,0xbf7feab4)
48443 httpd RET select 0
48443 httpd CALL gettimeofday(0xbf7feae4,0)
48443 httpd RET gettimeofday 0
48443 httpd CALL wait4(0xffffffff,0xbf7fea98,WNOHANG|WUNTRACED,0)
48443 httpd RET wait4 -1 errno 10 No child processes
48443 httpd CALL select(0,0,0,0,0xbf7feab4)
Mesma coisa repetida várias vezes. (Essas são as últimas linhas.) O que parece estar acontecendo é que ele está correndo para o select, trava um momento, retorna 0 e tenta novamente. Eu não sei se isso é um comportamento normal, mas parece que tudo bem para mim, já que parece que está apenas pesquisando o socket?
O que mais me preocupa é a espera que retorna um erro de que o processo não existe. A saída da treliça (com a qual iniciei o processo, obtendo a configuração inicial) mostra uma chamada para fork () que parece retornar bem (retorna um PID, sem erro).
Caso isso ajude, a saída da treliça: link (atualizada para httpd -X
.)
Eu realmente me conectei durante essa execução - select nunca parece retornar uma nova conexão? Além disso, eu transformei o LogLevel em Debug na configuração do Apache e tentei executá-lo novamente - ele nunca registra qualquer conexão.
Eu acho que isso é talvez mais um problema do FreeBSD do que o Apache, então, parece que o Apache nunca recebe o pedido. : /
Quaisquer (mais) ideias?
EDIT 2 : Este parece ser um problema com algo no FreeBSD, dado que o Apache nunca parece receber o pedido de conexão. Eu fiz um post nos fóruns do FreeBSD (forums.freebsd.org/showthread.php?p=118612) para ver se consigo encontrar alguma ajuda lá. Obrigado pessoal pelo seu tempo!