Hydro系统(OJ)维护小指南

星隐

快速操作索引

操作类型 常用命令
进程管理 pm2 ls pm2 restart <name> pm2 log hydrooj
系统更新 yarn global upgrade hydrooj && pm2 restart hydrooj
快速备份 hydrooj backup
缓存清理 yarn cache clean && nix-collect-garbage
版本查询 cd $(yarn global dir) && yarn list --pattern hydrooj

日常维护指南

一、进程管理(PM2)

核心进程清单

进程名称 功能描述 标准端口
hydrooj 系统主服务 8888
hydro-sandbox 评测沙箱 5050
mongodb 数据库服务 27017
caddy 反向代理服务 80/443

PM2 操作速查表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看进程状态
pm2 ls

# 快速重启主服务
pm2 restart hydrooj

# 查看实时日志(最新100行)
pm2 log hydrooj --lines 100

# 异常恢复(系统重启后)
pm2 resurrect

# 多进程模式(4核以上服务器建议)
pm2 start hydrooj -i 4 && pm2 save

⚠️ 重要提示

  1. 禁止随意更新 PM2 本体
  2. 修改进程配置后必须执行 pm2 save
  3. 出现异常时优先执行 pm2 flush 清理日志缓存

二、系统更新流程

1
2
3
4
5
6
7
8
# 1. 交互式更新组件
yarn global upgrade-interactive --latest

# 2. 重启相关服务
pm2 restart hydrooj hydro-sandbox

# 3. 验证版本
cd $(yarn global dir) && yarn list --pattern hydrooj

更新注意事项

  • 更新前必须执行 hydrooj backup
  • 避免在生产高峰期操作
  • 关注 官方更新日志

三、备份与恢复

自动备份方案

1
2
# 每日3点自动备份(需配置crontab)
0 3 * * * /usr/bin/hydrooj backup >/var/log/hydro-backup.log 2>&1

应急恢复步骤

1
2
3
1. 停止服务: pm2 stop all
2. 执行恢复: hydrooj restore backup-xxx.zip
3. 启动验证: pm2 start all

📁 备份文件规范

  • 保留最近7天备份
  • 异地存储至少1份副本
  • 定期进行恢复测试

月度维护建议

例行检查清单

  1. 备份验证

    • 检查备份文件完整性(解压验证)
    • 测试跨服务器恢复流程
  2. 系统健康检查

    1
    2
    3
    4
    5
    6
    7
    8
    # 检查服务运行时长
    pm2 ls --sort=time

    # 数据库状态检测
    echo "db.stats()" | hydrooj db

    # 存储空间监控
    df -h /data
  3. 安全审计

    • 检查 /root/.hydro/config.json 权限
    • 更新系统安全补丁
    • 审查用户权限配置
  4. 性能优化

    • 分析 pm2 logs --timestamp 中的慢查询
    • 清理过期测试数据(超过180天未访问)
    • 评估是否需要扩容

常见问题速查

服务类异常

Q1:服务无法访问
✅ 检查步骤:

  1. netstat -tulnp | grep '8888\|443' 验证端口监听
  2. pm2 log caddy 查看代理日志
  3. 检查安全组/防火墙设置

Q2:评测系统异常

1
2
3
4
5
# 沙箱状态诊断
pm2 log hydro-sandbox --lines 200 | grep ERROR

# 编译器测试
hydrooj test judge -i 1 -t 1000

配置类问题

修改备案信息

1
2
hydrooj cli system set footer_extra_html '<备案信息>'
pm2 restart hydrooj

调整提交限制

1
2
# 示例:设置单题最大评测时间
hydrooj cli system set total_time_limit 120

紧急恢复预案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
st=>start: 服务异常
op1=>operation: 检查 pm2 状态
cond1=>condition: 进程是否在线/正常?
op2=>operation: 尝试 pm2 resurrect
op3=>operation: 检查磁盘空间
cond2=>condition: 空间不足?
op4=>operation: 清理旧备份/日志
op5=>operation: 执行快速恢复
e1=>end: 恢复监控
e2=>end: 恢复监控

st->op1->cond1
cond1(yes)->e1
cond1(no)->op2->op3->cond2
cond2(yes)->op4->op5->e2
cond2(no)->op5->e2

维护支持

📞 官方技术支持群:1085853538
🔗 官方文档中心:https://docs.hydro.ac/docs/Hydro

附:所有关键操作必须留存操作日志,格式示例:
[2023-08-01] 执行系统更新 v3.22.1 → v3.23.0 操作人:admin

  • 标题: Hydro系统(OJ)维护小指南
  • 作者: 星隐
  • 创建于 : 2026-01-07 20:10:43
  • 更新于 : 2026-01-19 01:58:27
  • 链接: https://www.starin.top/post/6f2cfc6b5bf8/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。