本书未发布
定时任务系统
背景介绍
- 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进程的消耗。
- 日志目前是写到了一个文件,满了之后会清空日志文件。应保留数天时间后在清理。