Solución de problemas#
Si encuentra un problema técnico y no puede encontrar una solución en otras secciones, haga una pregunta en el foro de la comunidad o en el canal de Telegram.
Soporte técnico para clientes:
Registro de depuración#
El registro de depuración debe estar habilitado antes de realizar autodiagnósticos o según lo recomendado por el soporte técnico.
Para hacer esto, ejecute Angie utilizando el ejecutable con soporte de depuración:
En los paquetes precompilados para Linux,
el archivo angie-debug está compilado con soporte de depuración:
$ 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
Configure la ejecución de angie-debug:
$ sudo ln -fs angie-debug /usr/sbin/angie
$ sudo angie -t && sudo service angie upgrade
Esto iniciará una actualización del ejecutable en vivo.
Para volver al ejecutable normal después de la depuración:
$ sudo ln -fs angie-nodebug /usr/sbin/angie
$ sudo angie -t && sudo service angie upgrade
En los paquetes precompilados para FreeBSD,
el archivo angie-debug está compilado con soporte de depuración:
$ 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
Configure la ejecución de angie-debug:
$ sudo ln -fs angie-debug /usr/local/sbin/angie
$ sudo angie -t && sudo service angie upgrade
Esto iniciará una actualización del ejecutable en vivo.
Para volver al ejecutable normal después de la depuración:
$ sudo ln -fs angie-nodebug /usr/local/sbin/angie
$ sudo angie -t && sudo service angie upgrade
En las imágenes Docker con plantillas,
puede cambiar al ejecutable con soporte de depuración
anulando la variable de entorno ANGIE_BINARY:
$ docker run -it --rm -e ANGIE_BINARY="angie-debug" \
docker.angie.software/angie:templated
Al compilar Angie desde el código fuente, habilite la depuración antes de la compilación y luego compile e instale Angie como se describe en Compilación de Angie desde el código fuente:
$ ./configure --with-debug ...
$ make
$ sudo make install
Después de la instalación, compruebe que el ejecutable se compiló con soporte de depuración:
ejecútelo con -V y busque --with-debug en la salida.
Con los valores predeterminados de --prefix y --sbin-path,
el ejecutable es /usr/local/angie/sbin/angie:
$ sudo /usr/local/angie/sbin/angie -V
...
configure arguments: --with-debug ...
Luego reinicie Angie para cambiar al nuevo ejecutable, porque una recarga mantiene el ejecutable que ya está en ejecución. Antes de iniciar el nuevo ejecutable, espere a que termine el antiguo proceso maestro: el antiguo proceso maestro elimina el archivo PID al terminar. Si Angie no está en ejecución, ejecute solo el último comando:
$ sudo /usr/local/angie/sbin/angie -s quit
$ while [ -e /usr/local/angie/logs/angie.pid ]; do sleep 1; done
$ sudo /usr/local/angie/sbin/angie
Para cambiar sin interrumpir el servicio, realice en su lugar una actualización del ejecutable en vivo.
Nota
El uso del ejecutable con soporte de depuración puede reducir ligeramente el rendimiento; habilitar el registro de depuración puede reducirlo significativamente y aumentar el uso de espacio en disco.
Para habilitar el registro de depuración,
establezca el nivel debug en la configuración
utilizando la directiva error_log
(las imágenes Docker con plantillas usan en su lugar una variable de entorno,
como muestra la pestaña Docker más abajo):
error_log /path/to/log debug;
Luego aplique el cambio:
$ sudo angie -t && sudo service angie reload
$ sudo angie -t && sudo service angie reload
En las imágenes Docker con plantillas,
establezca el nivel con la variable de entorno ANGIE_ERROR_LOG_SEVERITY
en lugar de editar error_log;
la variable define el nivel del registro de errores principal.
Pásela junto con ANGIE_BINARY al iniciar el contenedor:
$ docker run -it --rm -e ANGIE_BINARY="angie-debug" \
-e ANGIE_ERROR_LOG_SEVERITY="debug" \
docker.angie.software/angie:templated
Pruebe la configuración y envíe la señal de recarga
con las opciones de línea de comandos del propio ejecutable;
con los valores predeterminados de --prefix y --sbin-path,
el ejecutable es /usr/local/angie/sbin/angie:
$ sudo /usr/local/angie/sbin/angie -t && sudo /usr/local/angie/sbin/angie -s reload
Si cambia al ejecutable sin soporte de depuración
pero deja el nivel La ubicación de la directiva error_log
afecta a la integridad de la información de depuración recopilada. Una directiva especificada en un nivel de configuración inferior
(por ejemplo, dentro de un bloque Registro de depuración deshabilitado para un servidor específico Si el registro de depuración está habilitado globalmente
pero error_log se especifica para un servidor individual sin el nivel Preservación del registro de depuración a nivel de servidor Para seguir recopilando información de depuración de un servidor específico,
elimine de ese servidor la anulación de error_log;
para dirigir esta información a un archivo diferente,
especifique también el nivel Puede habilitar el registro de depuración solo para
direcciones de cliente especificadas: El registro de depuración se puede escribir en un buffer de memoria cíclico: Escribir en el buffer de memoria en el nivel debug en la directiva error_log,
Angie registrará entradas en el nivel info.Ubicación de la directiva#
server o location)
anula la configuración de registro especificada en un nivel superior
(por ejemplo, en el nivel de configuración principal o dentro de un bloque http).debug,
no se recopilará información de depuración para ese servidor.error_log /var/log/angie/error.log debug; # Registro de depuración global
http {
server {
listen 80;
server_name example.com;
error_log /var/log/angie/example.com.error.log;
# El registro de depuración para example.com está deshabilitado, el archivo contiene nivel error
# ...
}
server {
listen 80;
server_name another.com;
# Este servidor utilizará el registro de depuración global
# ...
}
}
debug en la anulación:error_log /var/log/angie/error.log debug; # Registro de depuración global
http {
server {
listen 80;
server_name example.com;
error_log /var/log/angie/example.com.error.log debug;
# El registro de depuración para example.com está habilitado pero se escribe en un archivo separado
# ...
}
}
Registro de direcciones específicas#
error_log /path/to/log;
events {
debug_connection 192.168.1.1;
debug_connection 192.168.10.0/24;
}
Buffer de memoria cíclico#
error_log memory:32m debug;
debug
no afectará significativamente el rendimiento incluso bajo alta carga.
En este caso, el registro se puede extraer usando un script GDB, por ejemplo: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
Volcados de memoria (core dumps)#
Los volcados de memoria ayudan a investigar fallos.
Inclúyalos al contactar con soporte.
Para compilaciones de nuestros repositorios,
proporcionamos símbolos de depuración en paquetes especiales.
Tienen los mismos nombres que los paquetes originales
con el sufijo -dbg añadido, por ejemplo angie-dbg.
Nota
Esta sección asume
que está ejecutando Angie como el usuario root (recomendado).
Linux: systemd#
Para habilitar el guardado de volcados de memoria cuando Angie se ejecuta como servicio systemd
(por ejemplo, cuando se instala desde paquetes),
modifique la configuración del servicio
en el archivo /lib/systemd/system/angie.service:
[Service]
...
LimitCORE=infinity
LimitNOFILE=65535
O actualice la configuración global
en el archivo /etc/systemd/system.conf:
[Manager]
...
DefaultLimitCORE=infinity
DefaultLimitNOFILE=65535
Luego recargue la configuración del servicio y reinicie Angie para reproducir las condiciones del fallo:
$ sudo systemctl daemon-reload
$ sudo systemctl restart angie.service
Después del fallo, encuentre el archivo de volcado de memoria:
$ sudo coredumpctl -1 # opcional
TIME PID UID GID SIG COREFILE EXE
--- 2026-10-16 11:05:40 GMT 1157 0 0 11 present /usr/sbin/angie
$ sudo ls -al /var/lib/systemd/coredump/ # por defecto, ver también /etc/systemd/coredump.conf y /etc/systemd/coredump.conf.d/*.conf
...
-rw-r----- 1 root root 177662 Jul 27 11:05 core.angie.0.6135489c850b4fb4a74795ebbc1e382a.1157.1590577472000000.lz4
Linux: Configuración manual#
Esta sección trata el caso de Angie iniciado sin systemd,
como una compilación desde el código fuente,
y asume que el Angie de esta instalación está en ejecución;
los comandos usan las rutas predeterminadas de una compilación de ese tipo en /usr/local/angie.
El lugar donde el kernel guarda un archivo de volcado de memoria depende de /proc/sys/kernel/core_pattern.
Si el patrón empieza por |,
el kernel pasa el volcado al programa que se indica a continuación de ese carácter, por ejemplo systemd-coredump,
incluso para un Angie iniciado sin systemd;
en ese caso, busque el archivo de volcado de memoria como se describe en Linux: systemd
y omita los pasos siguientes sobre el directorio de trabajo.
Si el patrón es un nombre simple, como core,
el kernel escribe el archivo de volcado de memoria en el directorio de trabajo del proceso que falló,
que para los procesos de trabajo es por defecto el directorio desde el que se inició Angie.
Los procesos de trabajo se ejecutan con la cuenta que establece la directiva user
(nobody en una compilación por defecto desde el código fuente);
si esta cuenta no puede escribir en el directorio de trabajo,
el fallo no deja ningún archivo de volcado de memoria,
así que cree un directorio para los archivos de volcado de memoria:
$ sudo mkdir -p /var/tmp/angie-cores
$ sudo chown nobody /var/tmp/angie-cores
Defínalo con la directiva working_directory
en el contexto main de /usr/local/angie/conf/angie.conf:
working_directory /var/tmp/angie-cores;
Luego aumente el límite de tamaño de volcado de memoria.
Para aumentarlo solo para los procesos de trabajo y evitar un reinicio,
añada también la directiva worker_rlimit_core,
que admite un tamaño en lugar de unlimited,
y recargue la configuración:
worker_rlimit_core 1g;
$ sudo /usr/local/angie/sbin/angie -s reload
Para aumentar el límite también para el proceso maestro, reinicie Angie en lugar de recargarlo. De forma predeterminada, sudo inicia los comandos con un límite de tamaño de volcado de memoria de 0, y ulimit cambia el límite solo para el shell que lo ejecuta y para los comandos que ese shell inicia. Detenga el Angie en ejecución, espere a que termine el proceso maestro de Angie y luego aumente el límite e inicie Angie en un único shell de root:
$ sudo /usr/local/angie/sbin/angie -s quit
$ while [ -e /usr/local/angie/logs/angie.pid ]; do sleep 1; done
$ sudo sh -c 'ulimit -c unlimited && exec /usr/local/angie/sbin/angie'
Una compilación desde el código fuente configurada con --with-debug
incluye el soporte de depuración en el propio ejecutable /usr/local/angie/sbin/angie;
no existe un ejecutable angie-debug aparte.
Compruebe el límite de un proceso de trabajo;
tras el reinicio, ambos valores son unlimited,
y con worker_rlimit_core muestran, en bytes, el tamaño que esta directiva establece:
$ grep 'core file' /proc/$(pgrep -n -f 'angie: worker process')/limits
Max core file size unlimited unlimited bytes
Luego reproduzca el fallo.
Si el fallo dejó un archivo de volcado de memoria, el registro de errores
(/usr/local/angie/logs/error.log por defecto) muestra
worker process pid exited on signal number (core dumped);
el mismo mensaje sin (core dumped) significa
que el límite o el directorio de trabajo impidieron que se creara el archivo de volcado de memoria.
Encuentre el archivo de volcado de memoria:
$ sudo ls -al /var/tmp/angie-cores
...
-rw------- 1 nobody nogroup 177662 Jul 27 11:05 core.1157
FreeBSD#
Compruebe la configuración de volcados de memoria
en el archivo /etc/sysctl.conf, modifíquelas si es necesario:
kern.coredump=1 # debe ser 1
kern.corefile=/ruta/a/archivos/core/%N.core # necesita ruta correcta
O actualice la configuración en tiempo de ejecución:
$ sudo sysctl kern.coredump=1
$ sudo sysctl kern.corefile=/ruta/a/archivos/core/%N.core
En cualquiera de los dos casos, el directorio indicado en kern.corefile debe tener permiso de escritura
para la cuenta que establece la directiva user:
los procesos de trabajo se ejecutan con esta cuenta y escriben allí sus archivos de volcado de memoria.
Luego reinicie Angie para reproducir las condiciones del fallo. Si Angie está instalado como servicio:
$ sudo service angie restart
Si Angie está instalado manualmente, deténgalo, espere a que termine el proceso maestro de Angie, luego aumente el límite de tamaño de volcado de memoria e inicie Angie en un único shell de root, como en Linux:
$ sudo <ruta al directorio de instalación de Angie>/sbin/angie -s quit
$ while [ -e <ruta al directorio de instalación de Angie>/logs/angie.pid ]; do sleep 1; done
$ sudo sh -c 'ulimit -c unlimited && exec <ruta al directorio de instalación de Angie>/sbin/angie'
Después del fallo, encuentre el archivo de volcado de memoria:
$ sudo ls -al <ruta a los archivos de volcado de memoria>
...
-rw------- 1 nobody nobody 9912320 Jul 27 11:05 angie.core