Files
task-board/service.sh
T
work-1 af52c9f09c fix: 修复服务崩溃问题 - 添加异常处理和PM2进程管理
问题分析:
- 服务频繁崩溃(平均1小时1次)
- 无异常处理导致任何错误都引发进程退出
- 无进程管理器,崩溃后不自动重启
- 端口冲突无检测机制

主要修复:
1. 全局异常处理
   - uncaughtException 捕获
   - unhandledRejection 捕获
   - 端口错误监听
   - API错误中间件

2. PM2进程管理
   - 安装PM2 v6.0.14
   - 配置自动重启
   - 启用开机自启(systemd)
   - 进程监控和日志管理

3. 健康检查端点
   - GET /health
   - 返回运行时状态、内存、版本信息
   - 用于监控和诊断

4. 优雅关闭机制
   - 正确释放HTTP服务器
   - 关闭数据库连接
   - 10秒超时保护

5. 配置文件修复
   - package.json: main指向server.js
   - 版本更新到3.1.0
   - 添加PM2快捷命令

新增文件:
- CRASH-ANALYSIS.md: 详细问题分析报告
- service.sh: 服务管理脚本(start/stop/restart/logs等)

测试结果:
- 20次并发请求 100%成功
- PM2自动重启验证通过
- 开机自启配置完成

影响:
- 稳定性: 1小时1崩 → 持续稳定运行
- 可维护性: 完善的日志和监控
- 可靠性: 崩溃自动恢复
2026-02-24 16:42:52 +08:00

63 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# 任务管理系统服务控制脚本
PM2="/data/npm-global/bin/pm2"
SERVICE_NAME="task-service"
SERVICE_DIR="/data/openclaw/workspace/agent-task-service"
case "$1" in
start)
echo "🚀 启动服务..."
cd "$SERVICE_DIR"
$PM2 start server.js --name "$SERVICE_NAME"
;;
stop)
echo "⏸️ 停止服务..."
$PM2 stop "$SERVICE_NAME"
;;
restart)
echo "🔄 重启服务..."
$PM2 restart "$SERVICE_NAME"
;;
status)
$PM2 status "$SERVICE_NAME"
;;
logs)
$PM2 logs "$SERVICE_NAME" --lines ${2:-50}
;;
monitor)
$PM2 monit
;;
health)
echo "🏥 健康检查..."
curl -s http://localhost:3000/health | python3 -m json.tool
;;
test)
echo "🧪 测试API..."
echo "1. 健康检查:"
curl -s http://localhost:3000/health | python3 -m json.tool | head -5
echo ""
echo "2. 统计信息:"
curl -s http://localhost:3000/api/stats | python3 -m json.tool
;;
*)
echo "用法: $0 {start|stop|restart|status|logs|monitor|health|test}"
echo ""
echo "命令说明:"
echo " start - 启动服务"
echo " stop - 停止服务"
echo " restart - 重启服务"
echo " status - 查看状态"
echo " logs - 查看日志(可选参数:行数,默认50)"
echo " monitor - 实时监控"
echo " health - 健康检查"
echo " test - 测试API"
echo ""
echo "示例:"
echo " $0 logs 100 # 查看最近100行日志"
exit 1
;;
esac
exit 0