如何调试退出码为137的PHP脚本?Laravel批量处理场景排查
Laravel Worker批量处理大记录集的内存监控情况
我最近在运行一个长期执行的Laravel Worker,负责批量处理500万条记录,采用Laravel官方推荐的chunkById方法实现分批迭代,以此控制内存占用。
容器内存使用情况(docker stats输出)
通过docker stats查看容器资源使用,可见内存占用远低于200MiB:
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS fd05760e5d96 case-place-partners_case-place-partners_app_1 21.71% 140.5MiB / 7.666GiB 1.79% 919MB / 103MB 113MB / 21.4MB 19
PHP进程内存检测
我在代码关键位置添加了memory_get_usage()和memory_get_usage(true)实时检测内存使用,结果显示数值均未超过52428800字节(约50MiB)。
系统内存日志(journalctl输出)
通过journalctl -k | grep -i -e memory -e oom查看系统内存相关日志,未发现OOM(内存溢出)相关报错,日志内容如下:
Aug 19 09:28:41 mirokko-i3 kernel: Memory: 8023772K/8259584K available (12291K kernel code, 1319K rwdata, 3900K rodata, 1612K init, 3616K bss, 235812K reserved, 0K cma-reserved) Aug 19 09:28:41 mirokko-i3 kernel: Freeing SMP alternatives memory: 32K Aug 19 09:28:41 mirokko-i3 kernel: x86/mm: Memory block size: 128MB Aug 19 09:28:41 mirokko-i3 kernel: Freeing initrd memory: 9024K Aug 19 09:28:41 mirokko-i3 kernel: check: Scanning for low memory corruption every 60 seconds Aug 19 09:28:41 mirokko-i3 kernel: Freeing unused decrypted memory: 2040K Aug 19 09:28:41 mirokko-i3 kernel: Freeing unused kernel image memory: 1612K Aug 19 09:28:41 mirokko-i3 kernel: Freeing unused kernel image memory: 2012K Aug 19 09:28:41 mirokko-i3 kernel: Freeing unused kernel image memory: 196K Aug 19 09:28:57 mirokko-i3 kernel: [TTM] Zone kernel: Available graphics memory: 4019344 KiB Aug 19 09:28:57 mirokko-i3 kernel: [TTM] Zone dma32: Available graphics memory: 2097152 KiB
容器详细配置
容器的详细配置可通过docker inspect fd05760e5d96查看,相关输出已整理留存。
内容的提问来源于stack exchange,提问作者Tymur Valiiev
相关产品推荐
相关产品推荐

