Files
Sprout-Farm/Server/特殊农场系统优化说明.md

4.4 KiB
Raw Blame History

特殊农场系统优化说明

概述

特殊农场系统已经过全面优化,解决了服务器重启时间重置和性能问题。现在系统更加稳定、高效,不会影响游戏服务器的正常运行。

主要优化内容

1. 解决服务器重启时间重置问题

问题: 之前每次服务器重启都会立即执行维护任务,导致重复种植。

解决方案:

  • 添加维护时间记录功能
  • 服务器启动时检查当日是否已执行维护
  • 只有当天未维护过才会执行维护任务
  • 确保每天只执行一次维护,无论服务器重启多少次

2. 性能优化

CPU使用优化:

  • 调度器检查间隔从1分钟优化到5分钟
  • 减少不必要的CPU占用
  • 后台线程使用守护模式,不阻塞主进程

内存管理优化:

  • 改进资源清理机制
  • 服务器停止时正确释放特殊农场系统资源
  • 避免内存泄漏

3. 稳定性改进

错误处理:

  • 增强异常处理机制
  • 添加详细的日志记录
  • 系统出错时自动恢复

资源管理:

  • 正确的启动和停止流程
  • 线程安全的操作
  • 避免资源竞争

系统工作原理

定时任务调度

启动服务器 → 初始化特殊农场管理器 → 检查当日维护状态
     ↓
如果未维护 → 执行维护任务 → 记录维护时间
     ↓
如果已维护 → 跳过维护任务
     ↓
启动后台调度器 → 每天凌晨0点自动维护

维护任务内容

  1. 土地开垦: 确保所有土地都处于已开垦状态
  2. 作物种植: 随机种植杂交树1或杂交树2
  3. 状态设置: 设置作物为立即成熟状态
  4. 记录更新: 更新维护时间记录

使用方法

正常启动

特殊农场系统已集成到游戏服务器中,无需单独启动:

cd Server
python TCPGameServer.py

手动维护

如果需要手动执行维护任务:

# 维护所有特殊农场
python SpecialFarm.py test manual

# 维护指定农场
python SpecialFarm.py test manual 杂交农场

性能监控

使用性能监控工具检查系统资源使用:

python monitor_special_farm.py

测试优化效果

运行测试脚本验证优化效果:

python test_special_farm_optimization.py

配置说明

特殊农场配置

SpecialFarm.py 中的 special_farms 字典:

self.special_farms = {
    "杂交农场": {
        "object_id": "689b4b9286cf953f2f4e56ee",
        "crops": ["杂交树1", "杂交树2"],
        "description": "专门种植杂交树的特殊农场"
    }
}

调度器配置

  • 维护时间: 每天凌晨0点
  • 检查间隔: 5分钟
  • 运行模式: 后台守护线程

性能指标

优化前 vs 优化后

指标 优化前 优化后 改进
CPU检查间隔 1分钟 5分钟 减少80%检查频率
重启重复执行 避免重复维护
资源清理 不完整 完整 防止内存泄漏
错误恢复 基础 增强 提高稳定性

预期性能表现

  • CPU使用率: < 1%(正常运行时)
  • 内存使用: < 50MB额外占用
  • 线程数: +1后台调度线程
  • 启动时间: < 1秒

故障排除

常见问题

  1. 特殊农场未自动维护

    • 检查MongoDB连接是否正常
    • 查看日志文件 special_farm.log
    • 确认特殊农场配置正确
  2. 服务器启动缓慢

    • 检查MongoDB连接速度
    • 查看是否有网络问题
    • 考虑使用本地MongoDB
  3. 内存使用过高

    • 运行性能监控工具
    • 检查是否有内存泄漏
    • 重启服务器释放资源

日志文件

  • 特殊农场日志: special_farm.log
  • 服务器日志: 控制台输出
  • MongoDB日志: MongoDB服务器日志

维护建议

定期检查

  1. 每周检查:

    • 查看 special_farm.log 日志
    • 确认维护任务正常执行
    • 检查特殊农场作物状态
  2. 每月检查:

    • 运行性能监控工具
    • 清理过期日志文件
    • 检查MongoDB数据库状态

备份建议

  • 定期备份MongoDB数据库
  • 保存特殊农场配置文件
  • 记录重要的配置变更

技术支持

如果遇到问题,请提供以下信息:

  1. 错误日志内容
  2. 服务器运行环境
  3. MongoDB版本和配置
  4. 问题复现步骤

注意: 此优化版本向后兼容,不会影响现有的游戏数据和功能。