Итак, я запускаю эту команду:
/etc/init.d/apache2 start
И это говорит:
* Starting web server apache2 [ OK ]
Но! Мой сайт по-прежнему не работает. А также!
service --status-all
[ - ] apache2
Whaattt ....? Что происходит? ; (
[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
Роберт Росс
источник
источник
dpkg --configure -a
чтобы убедиться, что все файлы были настроены правильно.Ответы:
В Linux это обычно происходит из-за высокого ThreadsPerChild + высокий или неограниченный ulimit -s.
В Linux размер стека по умолчанию для каждого потока равен значению ulimit -s или 8-10 мегабайт - для нормальной работы Apache требуется около 512 килобайт стекового пространства или меньше.
Это быстро превышает либо 32-битный размер адресного пространства с TPC около 200+, либо, если у вас есть ограничения системной памяти, вы также можете столкнуться с ними.
Установите ulimit -s 512 в вашем файле "envvars", поставляемом вместе с apachectl - обратите внимание, что ThreadStackSize здесь не помогает, потому что это устанавливает минимум.
источник
Это новая установка или ранее она была стабильной и не запускалась?
Причиной может быть недостаток памяти, хотя в этом случае должно отображаться «(12) Невозможно выделить память: apr_thread_create: невозможно создать рабочий поток».
Скорее всего, вы превышаете настройку PTHREAD_THREADS_MAX в вашей ОС. Вы можете увеличить это или понизить ThreadsPerChild в Apache.
Скорее всего, вы используете дистрибутив «Worker» Apache, «prefork» может быть более подходящим, потому что он использует 1 поток на процесс, против «worker», который использует много потоков на процесс.
Источники:
источник
prefork
решил это для меня.Посмотрите логи, особенно error_log. Это должно помочь. Если это не поможет, попробуйте выполнить команду apache2:
strace -f -o output.txt /etc/init.d/apache2 start
strace будет отслеживать системные вызовы (флаг -f приказывает strace также следовать за дочерними процессами, а флаг -o записывает вывод в файл output.txt)
источник