You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Octane搭配FrankenPHP运行数小时后因状态码139崩溃

Laravel Octane运行数小时后触发段错误(状态码139)无日志排查方案

问题概述

Laravel Octane(基于FrankenPHP服务器)以systemd服务运行,应用稳定运行数小时后突然崩溃,进程退出状态码为139(对应SIGSEGV段错误),无应用层错误日志输出,系统日志仅记录进程退出信息,常规排查手段无法定位根因。

已尝试操作

  • 检查系统日志,未发现内存/CPU异常飙升
  • 配置Laravel自定义错误日志,无相关错误记录
  • 多次重启Octane并清除缓存,问题依旧复现
  • 监控运行环境,未发现明显内存泄漏或资源耗尽

补充信息

systemd服务配置

[Unit]
Description=Laravel Octane
After=network.target

[Service]
User=leensite
Group=leensite
WorkingDirectory=/home/leensite/domains/api.deleensite.nl/
ExecStart=/usr/local/php83/bin/php /home/leensite/domains/api.deleensite.nl/artisan octane:start --server=frankenphp --admin-port=8017 --watch
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=laravel-octane

[Install]
WantedBy=multi-user.target

系统日志片段

-- Logs begin at Sat 2024-10-19 00:36:59 CEST. --
okt 21 12:47:08 diana..com laravel-octane[3179888]:   Press Ctrl+C to stop the server
okt 21 15:37:41 diana..com systemd[1]: Stopping Laravel Octane...
okt 21 15:37:41 diana..com systemd[1]: laravel-octane-leensite.service: Succeeded.
okt 21 15:37:41 diana..com systemd[1]: Stopped Laravel Octane.
okt 21 15:37:49 diana..com systemd[1]: Started Laravel Octane.
okt 21 15:37:50 diana..com laravel-octane[3332275]:    INFO  Server running….
okt 21 15:37:50 diana..com laravel-octane[3332275]:   Local: http://127.0.0.1:3015
okt 21 15:37:50 diana..com laravel-octane[3332275]:   Press Ctrl+C to stop the server
okt 22 12:52:32 diana..com systemd[1]: laravel-octane-leensite.service: Main process exited, code=exited, status=139/n/a
okt 22 12:52:32 diana..com systemd[1]: laravel-octane-leensite.service: Failed with result 'exit-code'.

排查与解决步骤

段错误(SIGSEGV)通常由PHP扩展、底层服务器或PHP本身的内存访问错误导致,以下是针对性排查手段:

  1. 启用核心转储定位崩溃点
    生成核心转储文件用于分析崩溃原因:

    • 修改systemd服务配置,在[Service]段添加LimitCORE=infinity,重载配置后重启服务
    • 崩溃后在工作目录或系统核心转储路径找到core.<PID>文件,使用gdb /usr/local/php83/bin/php core.<PID>加载,执行bt命令查看调用栈,定位崩溃的具体模块
  2. 排查第三方PHP扩展
    段错误多与不兼容或有bug的PHP扩展相关:

    • 临时禁用非必要扩展(如Redis、GD、Imagick等),重启Octane观察问题是否复现
    • 确保所有扩展版本与PHP 8.3兼容,更新至最新稳定版
    • 测试环境可使用valgrind --leak-check=full /usr/local/php83/bin/php artisan octane:start ...检测内存泄漏(注意:valgrind会大幅降低性能,仅用于测试)
  3. 调整FrankenPHP与Octane配置

    • 生产环境禁用--watch参数,文件监控可能引发长期运行的内存问题
    • 通过--workers参数调整进程数,避免过多进程导致内存竞争
    • 更新FrankenPHP到最新版本,修复已知的内存访问类bug
  4. 系统层面排查

    • 运行memtest86+检测内存硬件是否存在故障
    • 升级系统内核至最新稳定版,修复旧内核的内存管理bug
    • 检查OOM Killer日志:dmesg | grep -i oom,确认是否因内存耗尽被系统杀死(状态码139有时关联OOM,但通常会有日志记录)
  5. Laravel应用层面排查

    • 检查代码中是否存在静态变量未重置、全局状态污染等问题,Octane复用进程会放大此类问题
    • 在config/octane.php中开启log_requests,记录所有请求,定位崩溃前的最后请求
    • 使用Laravel Telescope监控请求的资源使用与异常情况,排查潜在问题

内容的提问来源于stack exchange,提问作者Lumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:54:52