导读:本期聚焦于小伙伴创作的《Supervisor怎么管理Workerman进程并实现监控自动重启设置》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Supervisor怎么管理Workerman进程并实现监控自动重启设置》有用,将其分享出去将是对创作者最好的鼓励。

Workerman是PHP领域常用的常驻进程开发框架,广泛应用于即时通讯、消息队列、定时任务等场景,但进程运行中可能因异常、内存溢出等问题意外退出,需要可靠的进程管理工具保障服务持续可用,Supervisor就是这类场景下的常用解决方案。

Supervisor怎么管理Workerman进程并实现监控自动重启设置

Supervisor与Workerman基础介绍

Supervisor是用Python开发的进程管理系统,能够监控和管理类Unix系统上的进程,当被管理的进程意外退出时,会自动将其重启,同时支持进程状态查看、日志管理等功能。

Workerman是PHP编写的异步、多进程、高性能的网络通信框架,默认以多进程模式运行,主进程负责管理子进程,子进程处理具体业务逻辑,但主进程如果异常退出,整个服务就会停止。

环境准备与软件安装

安装Supervisor

在Ubuntu或Debian系统中,可直接使用apt包管理器安装:

# 更新软件源
sudo apt update
# 安装Supervisor
sudo apt install supervisor -y
# 启动Supervisor服务并设置开机自启
sudo systemctl start supervisor
sudo systemctl enable supervisor

在CentOS系统中,可使用yum安装:

# 安装Supervisor
sudo yum install supervisor -y
# 启动服务并设置开机自启
sudo systemctl start supervisord
sudo systemctl enable supervisord

准备Workerman项目

假设已经有一个部署好的Workerman项目,项目路径为/home/www/workerman_app,启动脚本为项目根目录下的start.php,启动命令为php start.php start -d,该命令会以守护进程模式启动Workerman。

编写Supervisor管理Workerman的配置文件

Supervisor的配置文件默认存放在/etc/supervisor/conf.d/目录下,每个进程组对应一个配置文件,我们新建workerman.conf文件:

[program:workerman]
# Workerman启动命令,注意要写绝对路径
command=php /home/www/workerman_app/start.php start -d
# 进程目录,设置为项目根目录
directory=/home/www/workerman_app
# 以哪个用户运行进程,避免权限问题
user=www
# 自动启动
autostart=true
# 程序退出后自动重启
autorestart=true
# 重启尝试次数,默认无限次
startretries=3
# 进程标准输出日志路径
stdout_logfile=/home/www/workerman_app/runtime/supervisor_stdout.log
# 进程错误输出日志路径
stderr_logfile=/home/www/workerman_app/runtime/supervisor_stderr.log
# 日志文件大小限制,超过后自动切割
stdout_logfile_maxbytes=50MB
stderr_logfile_maxbytes=50MB
# 日志文件保留数量
stdout_logfile_backups=10
stderr_logfile_backups=10
# 进程启动等待时间,确保Workerman完全启动
startsecs=5
# 停止进程的超时时间,超过该时间强制杀死进程
stopwaitsecs=10
# 停止进程的信号,Workerman支持SIGINT信号优雅停止
stopsignal=INT

配置文件中的关键参数说明:

  • autorestart设置为true时,只要进程退出码不是预期的正常退出码,Supervisor就会尝试重启进程
  • startsecs表示进程启动后持续运行该时间则认为启动成功,避免启动失败被误判为成功
  • stopsignal选择Workerman支持的停止信号,避免强制杀死进程导致业务数据丢失

加载配置并启动进程管理

配置文件编写完成后,需要让Supervisor加载新配置:

# 重新加载Supervisor配置
sudo supervisorctl reread
# 更新配置,启动新的进程组
sudo supervisorctl update

之后可以通过以下命令查看Workerman进程的运行状态:

# 查看所有管理的进程状态
sudo supervisorctl status

如果配置正确,会看到类似如下的输出:

workerman                        RUNNING   pid 1234, uptime 0:01:23

进程监控与自动重启验证

查看进程状态

除了status命令,还可以通过以下命令管理进程:

# 停止workerman进程
sudo supervisorctl stop workerman
# 启动workerman进程
sudo supervisorctl start workerman
# 重启workerman进程
sudo supervisorctl restart workerman

验证自动重启功能

可以手动杀死Workerman的主进程,验证Supervisor是否会自动重启:

# 查看Workerman主进程pid
ps aux | grep start.php
# 杀死主进程,假设pid为1234
kill -9 1234
# 等待几秒后查看进程状态
sudo supervisorctl status

此时会发现workerman进程的状态会短暂变为BACKOFFSTARTING,之后重新变为RUNNING,说明自动重启功能生效。

常见问题与解决思路

进程启动后立即退出

这种情况通常是启动命令错误或者权限不足导致的,可以查看stderr_logfile配置的日志文件,排查具体错误原因,比如PHP路径不正确、项目目录没有访问权限等。

自动重启不生效

首先检查autorestart是否设置为true,其次确认startsecs设置是否合理,如果进程启动后很快退出,可能还没到startsecs的时间就被判定为启动失败,不会触发重启。

日志文件不生成

确保配置的日志目录存在且运行Supervisor的用户有写入权限,比如上面的/home/www/workerman_app/runtime/目录需要给www用户赋予写权限。

总结

通过Supervisor管理Workerman进程,能够有效解决进程意外退出导致的服务不可用问题,减少人工运维的成本。核心步骤是正确安装Supervisor、编写适配Workerman运行特性的配置文件、验证自动重启功能是否正常。实际使用中还可以结合日志监控、告警系统,进一步提升服务的可靠性。

SupervisorWorkerman进程监控自动重启修改时间:2026-07-09 11:24:14

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。