Workerman进程异常退出后怎么自动拉起

云静姑娘_6004

云静姑娘_6004

2026-08-08

507人浏览

原创

workerman进程异常退出后自动拉起,依赖master进程捕获sigchld信号并调用pcntl_waitpid()判断退出状态,非正常退出(exit code ≠ 0)即立即重启worker;前提是master未崩溃、未被sigstop挂起,且worker由master fork启动并保持在同一进程组。

workerman进程异常退出后怎么自动拉起

Workerman进程异常退出后自动拉起,依赖主进程(Master)对子进程(Worker)的实时监控与重建能力,无需额外编码即可生效;但前提是主进程本身未崩溃,且未被SIGSTOP挂起。

主进程自动拉起Worker的触发条件

当Worker进程因段错误、PHP致命错误、OOM Kill或被kill -9终止时,操作系统会向Master进程发送SIGCHLD信号;Master捕获该信号后,立即调用pcntl_waitpid()获取退出状态,确认非正常退出(exit code ≠ 0)即启动拉起流程。

若Worker是收到SIGTERM后优雅退出(如执行stop命令),Master不会补足进程数——这是设计行为,不是故障。

【必须确保Worker进程由Master fork启动,且未脱离其进程组】。如果Worker在代码中调用posix_setsid()或自行daemonize,Master将失去对其生命周期的控制,自动拉起失效。

验证自动拉起是否正常工作

方法一:主动触发段错误测试

执行kill -SEGV $(pgrep -f "php start.php")(仅限测试环境),随后立刻检查error.log:应出现"worker process XXX exited on signal 11"及紧随其后的"start new worker process"类日志。

方法二:观察进程PID变化

运行ps -ef | grep 'php start.php' | grep -v grep,记下Worker PID;杀掉其中一个后等待3秒,再次执行该命令——新PID应已出现,且旧PID消失。

方法三:模拟PHP致命错误

鲜艺AI抠图
鲜艺AI抠图

鲜艺AI抠图是一款AI图片处理工具,免费 AI 抠图工具,支持离线安装与使用。

下载

在Worker业务逻辑中临时插入throw new Error('test fatal');,触发进程崩溃;查看日志中是否有连续的"exit"和"fork"记录,间隔应小于1秒。

systemd守护Master进程(防主进程意外退出)

第一步:创建服务文件/etc/systemd/system/workerman.service

内容如下:

[Unit]
Description=Workerman Service
After=network.target

[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/php /var/www/myapp/start.php start --daemon=0
Restart=always
RestartSec=3
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

第二步:启用并启动服务

sudo systemctl daemon-reload && sudo systemctl enable workerman && sudo systemctl start workerman

第三步:确认服务状态

运行sudo systemctl status workerman,输出中必须显示"active (running)"且"Main PID"与Master进程PID一致;若显示"failed",重点检查User权限和WorkingDirectory路径是否存在。

【User必须是非root用户(如www-data),否则Workerman bind端口时会报Permission denied】。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

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

下载

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

相关专题

更多
Workerman安装配置教程
Workerman安装配置教程

Workerman安装配置教程专题提供Workerman安装配置、WebSocket开发、TCP通信、异步编程、高并发服务搭建与PHP实时通信开发教程。

2026.05.20

186

15

Workerman实时通信与长连接开发教程
Workerman实时通信与长连接开发教程

WWorkerman实时通信与长连接开发教程聚合实时通信、聊天室、长连接、消息推送、AI流式输出等Workerman高并发开发内容。

2026.05.20

202

12

Workerman异步通信与TCP服务器开发
Workerman异步通信与TCP服务器开发

Workerman异步通信与TCP服务器开发专题整理Workerman异步通信、TCP服务、HTTP服务、WebSocket开发与高并发PHP服务器教程。

2026.05.20

187

13

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

2026.10.08

40

20

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

2026.09.30

140

10

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

2026.09.30

140

14

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

2026.09.30

100

12

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

2026.09.30

100

26

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

120

15

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webman中文手册
Webman中文手册

共0课时 | 0人学习

Workerman官方手册
Workerman官方手册

共0课时 | 0人学习

ThinkPHP5.1完全开发手册
ThinkPHP5.1完全开发手册

共0课时 | 0人学习