内存溢出
内存溢出 一、什么是内存溢出 内存溢出(Memory Overflow / Out of Memory, OOM)指程序在申请内存时,没有足够的空间供其使用。在 PHP 中,通常表现为: 脚本超出 memory_limit 设置(默认 128M),抛出 Fatal error: Allowed memory size of X bytes exhausted 系统级 OOM:PHP 进程消耗了操作系统分配的所有内存,被内核强制杀死(常见于常驻进程如 Swoole、Workerman) 二、如何排查内存溢出? 1. 查看错误日志 PHP 错误日志中会直接记录内存耗尽的位置和当前内存使用量。 系统日志(/var/log/messages 或 journalctl -xe)可看到是否因 OOM Killer 杀死了进程。 2. 使用内存分析工具 Xdebug 的追踪功能 xdebug.profiler_enable = 1 xdebug.profiler_output_dir = /tmp 生成 cachegrind 文件,用 QCacheGrind 或 WebGrind 分析,查看哪个函数/行消耗了大量内存。 Xdebug 的垃圾回收统计 xdebug_debug_zstd('your_var'); // 显示变量内存占用(需扩展) 使用 memory_get_usage() / memory_get_peak_usage() 在代码关键位置打印内存,定位峰值点: echo memory_get_usage() . " bytes\n"; // 执行一段代码 echo memory_get_peak_usage() ....