本书未发布

定时任务系统

未匹配的标注

背景介绍

  • Cron定时任务数量过多,不易管理。
  • 当时Crontab服务不稳定,莫名挂了。

功能实现

示例:http://127.0.0.1:3401/, 参考了Supervisor的Web管理方式。

定时任务系统

启动子任务需要检测子进程当前状态,状态的流转如下:

定时任务系统

所有状态:

    public static $desc = [
        self::STOPPED => 'stopped',
        self::STARTING => 'starting',
        self::RUNNING => 'running',
        self::BACKOFF => 'backoff',
        self::STOPPING => 'stopping',
        self::EXITED => 'exited',
        self::FATAL => 'fatal',
        self::UNKNOWN => 'unknown',
        self::DELETING => 'deleting',
        self::WAITING => 'waiting',
    ];
  • Web可视化管理,启动|停止任务更方便。可线上查看日志等
  • 最大并发数量控制,Cron是需要自己在代码实现。
  • 可按标签搜索子进程
  • 异常检测发现:
    (1)子任务周期内执行超时
    (2)主进程周期内执行超时
    (3)内存使用超过阈值

待实现功能:

  • 增加每条命令的help功能,可获得该命令的更多信息。如功能,参数介绍等
  • 增加临时启动命令功能,解决某些情况下需要临时执行命令。
  • 增加安全登入功能。目前是基于内网实现,不支持外网访问。

可优化功能:

  • 可增加每个进程的内存监控,使用扩展:vmstat
  • 子进程目前是执行完任务则回收子进程,可保留一定数量的worker进程,如果有空闲的话则优先使用worker进程。省去了每次fork进程的消耗。
  • 日志目前是写到了一个文件,满了之后会清空日志文件。应保留数天时间后在清理。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~