Отладка#
Если у вас возникла техническая проблема, но нужное решение не удалось найти в других разделах, задайте нам вопрос на форуме сообщества или в Telegram-канале.
Техническая поддержка для клиентов:
Отладочный лог#
Отладочный лог следует включать перед самостоятельной диагностикой или по рекомендации технической поддержки.
Для этого запустите Angie, используя исполняемый файл с поддержкой отладки:
В готовых пакетах для Linux
файл angie-debug
собран с включенным отладочным логом:
$ ls -l /usr/sbin/ | grep angie
lrwxrwxrwx 1 root root 13 Sep 21 18:58 angie -> angie-nodebug
-rwxr-xr-x 1 root root 1561224 Sep 21 18:58 angie-debug
-rwxr-xr-x 1 root root 1426056 Sep 21 18:58 angie-nodebug
Настройте запуск angie-debug
:
$ sudo ln -fs angie-debug /usr/sbin/angie
$ sudo angie -t && sudo service angie upgrade
Запустится обновление исполняемого файла на лету.
Чтобы вернуться к обычному исполняемому файлу после окончания отладки:
$ sudo ln -fs angie-nodebug /usr/sbin/angie
$ sudo angie -t && sudo service angie upgrade
В готовых пакетах для FreeBSD
файл angie-debug
собран с включенным отладочным логом:
$ ls -l /usr/local/sbin/ | grep angie
lrwxrwxrwx 1 root root 13 Sep 21 18:58 angie -> angie-nodebug
-rwxr-xr-x 1 root root 1561224 Sep 21 18:58 angie-debug
-rwxr-xr-x 1 root root 1426056 Sep 21 18:58 angie-nodebug
Настройте запуск angie-debug
:
$ sudo ln -fs angie-debug /usr/local/sbin/angie
$ sudo angie -t && sudo service angie upgrade
Запустится обновление исполняемого файла на лету.
Чтобы вернуться к обычному исполняемому файлу после окончания отладки:
$ sudo ln -fs angie-nodebug /usr/local/sbin/angie
$ sudo angie -t && sudo service angie upgrade
При самостоятельной сборке Angie нужно включить отладку перед сборкой:
$ ./configure --with-debug ...
После установки команда angie -V позволяет убедиться, что отладочный лог включен:
$ angie -V
...
configure arguments: --with-debug ...
Примечание
Использование исполняемого файла с поддержкой отладки может незначительно снизить производительность; включение же отладочного лога может заметно снизить ее, а также увеличить расход места на диске.
Чтобы включить отладочный лог,
задайте в конфигурации уровень debug
с помощью директивы error_log:
error_log /path/to/log debug;
И перезагрузите конфигурацию:
$ sudo angie -t && sudo service angie reload
Примечание
Если переключиться на исполняемый файл без поддержки отладки,
но оставить уровень debug
в директиве error_log,
Angie будет добавлять записи в лог на уровне info
.
Переопределение error_log в конфигурации
без указания уровня debug
отключит отладочный лог.
Здесь переопределение лога на уровне server
отключает отладочный лог для отдельного сервера:
error_log /path/to/log debug;
http {
server {
error_log /path/to/log;
# ...
Во избежание этого уберите строку, переопределяющую error_log,
либо задайте в ней уровень debug
:
error_log /path/to/log debug;
http {
server {
error_log /path/to/log debug;
# ...
Лог для отдельных адресов#
Можно включить отладочный лог только для указанных клиентских адресов:
error_log /path/to/log;
events {
debug_connection 192.168.1.1;
debug_connection 192.168.10.0/24;
}
Кольцевой буфер в памяти#
Отладочный лог можно записывать в кольцевой буфер в памяти:
error_log memory:32m debug;
Запись в буфер в памяти на уровне debug
не будет существенно влиять на производительность даже при высоких нагрузках.
В этом случае лог можно извлечь при помощи GDB-скрипта, например:
set $log = ngx_cycle->log
while $log->writer != ngx_log_memory_writer
set $log = $log->next
end
set $buf = (ngx_log_memory_buf_t *) $log->wdata
dump binary memory debug_log.txt $buf->start $buf->end