故障排除#
如果您遇到技术问题,并且在其他部分找不到解决方案,请在 社区论坛 或 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 ...
备注
使用启用调试支持的可执行文件可能会略微降低性能;启用调试日志可能会显著降低性能并增加磁盘空间使用。
要启用调试日志,请在配置中使用 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