服务器崩溃时,具体会产生哪些文件,主要取决于崩溃的类型(比如系统内核崩溃、应用进程崩溃、内存耗尽)以及操作系统的配置,下面我按常见的场景为你梳理一下:
1. 核心转储文件(Core Dump File)
这是最重要的故障排查文件,记录了进程崩溃瞬间的内存快照。
文件特征:通常名为core 或core.xxxx(xxxx是进程ID),也可能叫core.程序名.进程ID。
产生场景:当某个应用程序进程(如 Java、MySQL、Nginx、自研服务)发生非法访问、段错误(Segmentation Fault)、内存溢出(OOM,Out Of Memory)等严重错误时,操作系统会生成此文件。
存放位置:默认在进程的工作目录(如/var/log/ 或/tmp/),或根据/proc/sys/kernel/core_pattern 文件指定的路径和命名规则(例如很多 Linux 系统配置在/var/lib/systemd/coredump/)。
分析工具:gdb(GNU调试器)、lldb 或addr2line,通过分析 core 文件,可以精确定位到是哪个函数、哪行代码导致了崩溃。
2. 系统崩溃转储文件(Kernel Crash Dump File)
当服务器操作系统内核本身崩溃(如硬件故障、内核驱动Bug、严重的内存错误,即“蓝屏”或“Kernel Panic”)时产生。
Linux:会产生kdump 文件,通常存放在/var/crash/ 目录下,文件名类似vmcore 或vmcore-incomplete,这个文件非常大(与物理内存大小相当),需要通过crash 或trace-cmd 等工具分析。
Windows:会产生内存转储文件,如MEMORY.DMP(位于%SystemRoot% 即C:\Windows 下),Minidump 文件(位于%SystemRoot%\Minidump 下)。BlueScreenView 等工具可以解析这些文件。
3. 各种错误日志文件(Error / Crash / Log Files)
这是最直接、最常用的文件,不包含完整内存快照,只记录错误信息和调用栈。
| 文件类型 | 常见文件路径/名称 | 产生场景与内容 |
| 系统日志 | /var/log/messages (Linux RedHat/CentOS)/var/log/syslog (Linux Debian/Ubuntu)/var/log/kern.log | 硬件错误、文件系统错误、驱动崩溃、OOM Killer记录。 |
| 应用服务器日志 | tomcat/logs/catalina.outtomcat/logs/localhost.lognginx/logs/error.logapache/logs/error_log | JS引擎错误、同步异常、服务处理超时、请求崩溃。 |
| Java堆转储 | /tmp/java_pidxxxx.hprof/var/log/tomcat/heapdump.hprof | 注意: 不是崩溃文件,但常与崩溃一起发生,当Java应用发生OutOfMemoryError: Java heap space时产生,记录所有对象的内存堆栈,分析工具:Eclipse MAT、jhat。 |
| Java线程转储 | /tmp/thread_dump.txt (通常由kill -3 或 jstack 手动生成) | 不是崩溃文件,是应用卡死(stuck)时的快照,分析工具:jstack、fastthread.io。 |
| Windows 应用程序事件日志 | C:\Windows\System32\winevt\Logs\Application.evtx | 包含应用程序崩溃的详细错误信息、故障模块、偏移量。 |
MySQL/MariaDB:会产生.err 日志和.trc(跟踪文件),记录InnoDB引擎的断言失败(assertion failure)或表空间损坏。
PostgreSQL:会产生.pg_log 中的错误日志,以及.crash 文件。
当服务器崩溃后,你可以按以下顺序寻找文件:
1、先看最近修改的系统日志:/var/log/messages 或/var/log/syslog,快速定位硬件或内核级错误。
2、再看应用自身日志:如tomcat/catalina.out 或nginx/error.log。
3、如果有Java进程,检查工作目录下是否有.hprof 文件(堆转储)。
4、最后才考虑大文件:如core 文件或vmcore 文件(这些文件很大且需要专业工具,通常是最后才分析的证据)。
注意:很多默认系统配置不生成 core 文件(因为大小和被滥用风险),如果你需要调试,需要修改/etc/security/limits.conf 和/proc/sys/kernel/core_pattern 来开启核心转储功能。
文章摘自:https://idc.huochengrm.cn/js/25539.html
评论