宝塔面板安装Swoole后必须配置异常监控与实时告警:1. 验证扩展启用(含async redis支持);2. 确保Swoole≥5.0以使用内置stats接口;3. 添加本地健康检查端点(127.0.0.1:9502);4. 在宝塔网站监控中配置该端点;5. 部署PID进程级崩溃检测脚本;6. 设置日志关键词自动告警。

宝塔面板安装Swoole扩展后,需立即配置异常监控与实时告警通道,否则WebSocket连接中断、协程崩溃或HTTP服务挂起时无法主动通知运维人员,导致业务长时间静默故障。
确认Swoole已正确加载并启用监控能力
执行命令验证Swoole是否真正生效:/www/server/php/82/bin/php --ri swoole,输出中必须同时包含【enabled】和【support for async redis】字样;若仅显示“swoole support => enabled”但无具体模块列表,说明扩展未完整启用,跳过后续所有步骤直接回退到php.ini检查环节。
检查Swoole版本是否支持内置监控:Swoole 5.0+ 才提供Swoole\Server::stats()和Swoole\Coroutine::getStats()接口,低于此版本需自行集成Prometheus Exporter或Zabbix Agent。
配置Swoole服务端内置健康检查端点
在你的Swoole HTTP或WebSocket服务启动脚本末尾添加以下代码:
$server->on("workerStart", function ($server, $workerId) {<br> if ($workerId === 0) {<br> $server->addProcess(new Swoole\Process(function ($process) use ($server) {<br> $http = new Swoole\Http\Server("127.0.0.1", 9502);<br> $http->on("request", function ($req, $resp) use ($server) {<br> $stats = $server->stats();<br> $resp->header("Content-Type", "application/json");<br> $resp->end(json_encode($stats));<br> });<br> $http->start();<br> }));<br> }<br>});
这段代码会额外启动一个仅监听本地127.0.0.1:9502的轻量HTTP服务,暴露实时统计指标。注意:不要将该端口对外网开放,仅用于内网监控系统轮询。
接入宝塔自带的网站监控告警
登录宝塔面板 → 左侧「网站」→ 找到运行Swoole服务的站点 → 点击「设置」→「监控报表」→ 开启「网站可用性监控」。
在「自定义监控URL」中填写:http://127.0.0.1:9502,状态码阈值设为【200】,超时时间设为【3秒】;若返回非200或超时,宝塔将自动触发邮件/微信/短信告警(需提前在「面板设置 → 消息推送」中完成绑定)。
⚠️ 注意:此处必须用127.0.0.1,不能写localhost或域名,否则宝塔监控进程因DNS解析失败而判定为宕机。
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
部署独立进程级崩溃捕获脚本
创建文件/www/wwwroot/swoole-monitor/check-worker.php,内容如下:
<?php <br>$pidFile = '/www/wwwroot/your-swoole-app/storage/swoole.pid';<br>if (!file_exists($pidFile)) {<br> exec("echo 'Swoole主进程已退出' | mail -s '【紧急】Swoole服务异常终止' admin@example.com");<br> exit;<br>}<br>$pid = (int)file_get_contents($pidFile);<br>if (!posix_kill($pid, 0)) {<br> exec("echo 'PID {$pid} 对应进程不存在' | mail -s '【严重】Swoole工作进程崩溃' admin@example.com");<br>}
然后通过宝塔「计划任务」添加每分钟执行一次的定时任务:php /www/wwwroot/swoole-monitor/check-worker.php。
该脚本直接读取Swoole服务生成的PID文件并探测进程存活状态,比HTTP探活更早发现致命崩溃——例如SIGSEGV导致整个worker进程段错误退出,此时HTTP端口可能仍响应旧缓存页,但实际业务已不可用。
配置Swoole日志异常关键词自动告警
第一步:确保Swoole日志已输出到固定文件,启动时指定--log_file=/www/wwwroot/your-app/storage/swoole.log参数。
第二步:在宝塔「安全」→「防暴力破解」→「自定义规则」中新增一条日志监控规则:
日志路径:/www/wwwroot/your-app/storage/swoole.log
匹配关键词:Segmentation fault|FATAL ERROR|coroutine stack overflow|out of memory
告警方式:触发即发邮件+微信(需已绑定)
第三步:点击「启用」并测试——手动向日志写入一行echo "FATAL ERROR: worker exit" >> /www/wwwroot/your-app/storage/swoole.log,确认告警是否10秒内送达。










