Как проверить, где висит Apache2? - PullRequest
3 голосов
/ 12 марта 2012

Мой Apache2 зависает.Я не могу получить от этого никакого ответа.

Я пытался запустить wget localhost

просто зависает вот так:

--2012-03-12 06:36:40--  http://localhost/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response...

Как я могу получить больше отладочной информации?

Ответы [ 2 ]

3 голосов
/ 12 марта 2012

Используйте netstat -nt, чтобы увидеть, какие соединения есть с портом 80 из 127.0.0.1.

Вы можете использовать fuser -n tcp 80,127.0.0.1,<port-number> для поиска PID процесса Apache, который имеет TCP-соединение через порт 80 с 127.0.0.1 из заданного.

Затем выполните strace -p <pid> для этого процесса, чтобы увидеть, что он делает на уровне системных вызовов.

Вы можете выполнить шаги по поиску pid, если перезапустите Apache в однопроцессном режиме (при условии, что зависание все еще воспроизводится!). Если бы это было так, я бы просто запустил этот Apache в strace и перехватил трассировку.

Исходя из этого, я бы решил, что делать дальше. Это висит в системном вызове, не висит в системном вызове, ... который системный вызов. Последними прибежищами будет получение отладочной сборки и gdb -ing.

Руководство по отладке Apache: http://httpd.apache.org/dev/debugging.html

2 голосов
/ 12 марта 2012

Попробуйте tail -f /var/log/apache/error_log.

Ваш путь к error_log может быть другим.Чтобы найти его, попробуйте find / -name error_log.Если вы не вошли в систему как root, то вы можете увидеть группу «Отказано в доступе».В этом случае вы можете скрыть сообщения об ошибках с помощью find / -name error_log 2>/dev/null или попытаться угадать местоположение с помощью find /var/log/ -name error_log.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...