Files
brunoandClaude Sonnet 4.5 3906e06eef feat: 添加PM2和保活监控解决前端崩溃问题
问题:Vite开发服务器经常崩溃导致前端无法访问

解决方案:
1. PM2稳定模式(推荐):
   - ecosystem.config.js: PM2配置文件
   - start_with_pm2.sh: PM2一键启动脚本
   - 自动重启崩溃服务,内存限制500MB(前端)/1GB(后端)
   - 日志管理,所有日志保存到logs目录

2. 保活监控模式(备选):
   - keep_alive.sh: 每10秒检测服务状态
   - 发现崩溃自动重启前端/后端服务

3. 更新README.md:详细说明三种启动方式及优劣

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
2025-12-25 17:41:08 +08:00

81 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
# ==========================================
# ljwx-stock - 保活监控脚本
# 自动检测并重启崩溃的前端服务
# ==========================================
FRONTEND_PORT=8448
BACKEND_PORT=8028
CHECK_INTERVAL=10 # 每10秒检查一次
# 颜色定义
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m'
log() {
echo -e "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
}
check_and_restart_frontend() {
if ! lsof -Pi :$FRONTEND_PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
log "${RED}✗ Frontend service down!${NC}"
log "${YELLOW}→ Restarting frontend...${NC}"
# 清理旧进程
if [ -f ".frontend.pid" ]; then
kill $(cat .frontend.pid) 2>/dev/null || true
rm -f .frontend.pid
fi
# 重启前端
cd frontend
mkdir -p ../logs
npm run dev > ../logs/frontend.log 2>&1 &
echo $! > ../.frontend.pid
cd ..
sleep 5
if lsof -Pi :$FRONTEND_PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
log "${GREEN}✓ Frontend restarted successfully${NC}"
else
log "${RED}✗ Frontend restart failed${NC}"
fi
fi
}
check_and_restart_backend() {
if ! lsof -Pi :$BACKEND_PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
log "${RED}✗ Backend service down!${NC}"
log "${YELLOW}→ Restarting backend...${NC}"
# 重启后端
cd backend
source .venv/bin/activate
uvicorn main:app --host 0.0.0.0 --port $BACKEND_PORT --reload > ../logs/backend.log 2>&1 &
cd ..
sleep 5
if lsof -Pi :$BACKEND_PORT -sTCP:LISTEN -t >/dev/null 2>&1; then
log "${GREEN}✓ Backend restarted successfully${NC}"
else
log "${RED}✗ Backend restart failed${NC}"
fi
fi
}
# 主循环
log "${GREEN}Starting keep-alive monitor...${NC}"
log "Monitoring ports: Frontend=$FRONTEND_PORT, Backend=$BACKEND_PORT"
log "Check interval: ${CHECK_INTERVAL}s"
while true; do
check_and_restart_frontend
check_and_restart_backend
sleep $CHECK_INTERVAL
done