故障排除#

如果您遇到技术问题,并且在其他部分找不到解决方案,请在 社区论坛Telegram 频道 上提问。

客户技术支持:

  • https://support.angie.software

调试日志#

在执行自我诊断或按照支持建议进行操作之前,应启用调试日志。

为此,请使用启用调试日志的可执行文件运行 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

备注

使用启用调试支持的可执行文件可能会略微降低性能;启用调试日志可能会显著降低性能并增加磁盘空间使用。

要启用调试日志,请在配置中使用 error_log 指令设置 debug 级别:

error_log /path/to/log debug;

并重新加载配置:

$ sudo angie -t && sudo service angie reload

备注

如果切换到未启用调试支持的可执行文件,但在 error_log 指令中保留 debug 级别,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