如何通过分析 error_log 捕获 Worker 处理请求时的段错误教程

轻萱大大_6925

轻萱大大_6925

2026-05-13

511人浏览

原创

signal 11 表示段错误(sigsegv),源于非法内存访问,常见于第三方模块不兼容、空指针解引用、ssl 配置触发 openssl 断言或 lua 模块 c api 调用异常;需结合前序 error/warn 日志、模块隔离测试及 core dump 的 gdb 回溯精准定位。

如何通过分析 error_log 捕获 worker 处理请求时的段错误教程

直接看 error_log 中的 signal 值,它是判断段错误(SIGSEGV)最核心的依据。出现 worker process exited on signal 11 就意味着 Nginx worker 在处理请求过程中发生了非法内存访问——不是配置写错,而是运行时崩溃,必须立刻响应。

从 signal 11 日志定位段错误源头

典型日志行如下:

2026/05/11 21:32:47 [alert] 12345#0: worker process 67890 exited on signal 11 (core dumped)

关键不是 “exited”,而是 signal 11。它说明进程在执行某段 C 代码时访问了非法地址,常见原因包括:

  • 第三方模块(如 fastdfs-nginx-module、云锁内核过滤器)与当前 Nginx 版本 ABI 不兼容
  • 模块中存在空指针解引用、数组越界、use-after-free 等底层 C 错误
  • SSL 配置触发 OpenSSL 内部断言失败(尤其在 Nginx ≤ 1.16 + OpenSSL 1.0.2 组合下)
  • 自定义 Lua 模块(via ngx_lua)调用 C API 时传参异常或未检查返回值

结合上下文缩小触发范围

单独一行 signal 11 信息有限,必须往前翻 1–3 秒内 的 warn/error 记录,找紧邻的线索:

  • 若前有 open() "/path/to/mod_fastdfs.conf" failed (2: No such file),说明 fastdfs 模块初始化失败,极可能引发后续段错误
  • 若前有 recv() failed (104: Connection reset by peer) while reading response header from upstream,需排查是否后端返回异常二进制数据被模块误解析
  • 若 signal 11 总在特定 URL(如 /upload)或特定 Header(如含超长 X-Trace-ID)后出现,基本可复现并用于 gdb 调试

验证与隔离模块问题

段错误多由模块引入,需快速验证是否为“某个模块”导致:

  • 临时注释掉所有 load_module 行,仅保留官方核心模块,nginx -t && nginx -s reload,观察 signal 11 是否消失
  • 逐个启用第三方模块(每次只开一个),每启用一次就压测相同请求路径,定位肇事模块
  • 对可疑模块,检查其编译时 Nginx 版本(nginx -v)与运行时是否一致;不一致必须重新编译
  • 若使用云锁、安全狗等内核级 WAF,检查其 FilterKernel.xml 是否启用了与 Nginx 内存模型冲突的过滤规则

启用 core dump 辅助根因分析

仅靠日志无法看到崩溃现场,需捕获 core 文件供 gdb 分析:

  • 确保系统允许生成 core:ulimit -c unlimited,并在 systemd service 文件中添加 LimitCORE=infinity
  • Nginx 配置中设置 working_directory /var/tmp;,并确认该目录对 worker 用户(如 www-data)可写
  • 复现问题后,用 gdb $(which nginx) /var/tmp/core.* 打开 core,执行 bt full 查看完整调用栈,重点关注最顶层非 Nginx 官方模块的函数名
  • 若调用栈中出现 ngx_http_fastdfs_process_init 或 cloudlock_filter_handler 等字样,即可 100% 锁定模块
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2832

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

956

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

849

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2576

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4772

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

767

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习