Então, eu executo este comando:
/etc/init.d/apache2 start
E diz:
* Starting web server apache2 [ OK ]
Mas! Meu site ainda não aparece. E!
service --status-all
[ - ] apache2
O que ....? O que está acontecendo? ; (
[Sat May 01 14:45:18 2010] [warn] pid file /var/run/apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[Sat May 01 14:45:18 2010] [notice] Apache/2.2.11 (Ubuntu) PHP/5.3.2 configured -- resuming normal operations
[Sat May 01 14:45:18 2010] [alert] (11)Resource temporarily unavailable: apr_thread_create: unable to create worker thread
[Sat May 01 14:45:18 2010] [alert] (11)Resource temporarily unavailable: apr_thread_create: unable to create worker thread
[Sat May 01 14:45:20 2010] [alert] No active workers found... Apache is exiting!
apache-2.2
Robert Ross
fonte
fonte
dpkg --configure -a
para garantir que todos os arquivos foram configurados corretamente.Respostas:
No Linux, isso geralmente ocorre devido a ulimit -s alto ou ThreadsPerChild + alto ou ilimitado.
No Linux, o tamanho padrão da pilha para cada encadeamento é ulimit -s value ou 8-10 megabytes - o Apache precisa de cerca de 512 kilobytes de espaço na pilha ou menos sob uso normal.
Isso substitui rapidamente o tamanho do espaço de endereço de 32 bits com o TPC próximo a mais de 200 ou, se você tiver limites de memória do sistema, também poderá se deparar com eles.
Defina ulimit -s 512 no arquivo "envvars" enviado juntamente com o apachectl - observe que o ThreadStackSize não ajuda aqui porque isso define um mínimo.
fonte
Esta é uma nova instalação ou era anteriormente estável e não pode ser reiniciada?
Memória insuficiente pode ser a causa, embora um "(12) não possa alocar memória: apr_thread_create: não é possível criar o thread de trabalho" deve ser exibido se esse for o caso.
É mais provável que você esteja excedendo a configuração PTHREAD_THREADS_MAX no seu sistema operacional. Você pode aumentar isso ou diminuir o ThreadsPerChild no Apache.
Você provavelmente está usando a distribuição "Worker" do Apache, o "prefork" pode ser mais apropriado porque usa 1 thread por processo, versus "worker", que usa muitos threads por processo.
Fontes:
fonte
prefork
isso resolveu para mim.Dê uma olhada nos logs, especialmente no error_log. Isso deve ajudar. Se isso não ajudar, tente rastrear o comando apache2:
strace -f -o output.txt /etc/init.d/apache2 start
strace rastreia as chamadas do sistema (o sinalizador -f ordena que o strace siga os processos filhos também e o sinalizador -o grava a saída no arquivo output.txt)
fonte