大家都是怎么管理服务器上的脚本的?

2015-01-09 13:13:23 +08:00
 haython
各种定时执行的脚本,长驻的脚本,怎么监控,怎么定时执行的(暂时用的crontab),如果是crontab执行我,我现在要看执行的结果是不是正确怎么搞?有没有一个比较成熟的方案来借鉴啊
5813 次点击
所在节点    问与答
8 条回复
wwwap
2015-01-09 13:18:11 +08:00
supervisor
9hills
2015-01-09 13:24:26 +08:00
crontab is bad.

常驻脚本,用supervisor管理。监控用其他的监控系统,把常驻脚本当成service来处理
定时脚本,不要用crontab

如果你只有个别机器,可以看看
http://dshearer.github.io/jobber/

大规模crontab,可以参考: http://airbnb.github.io/chronos/
不过这个基于mesos,简直杀鸡用牛刀
Devin
2015-01-09 14:26:06 +08:00
@9hills 为什么定时脚本不要用corntab?
pheyx
2015-01-09 14:56:44 +08:00
@Devin 因为他什么都不懂
loryyang
2015-01-09 15:09:02 +08:00
简单的话,用ct没任何问题,如果发现ct不够用了,再考虑升级,可以考虑其他的调度系统,或者自己开发。supervisor本质是保证程序的运行,不是用来执行调度。ct+supervisor可以解决许多问题。

监控是个复杂的事情,一般两个方向:1. 监控日志,2. 监控数据。首先你程序得好好打日志,你才有办法监控,有了日志,我觉得监控不是什么很大的问题。

我觉得ct问题不大,简单易行。不过就是不直观,可以配置的也不多。顺带遇到过几次比较奇怪的故障。第一次是ct控制一分钟跑一次,但是莫名其妙的在一分钟里面调用了两次程序,把程序搞挂了。第二次,ct的端口(是的,ct有一个端口)被别的程序占了,然后自己默默地停了。。。
clino
2015-01-09 15:14:26 +08:00
我觉得可以用 buildbot/jenkins 这种来管理定时任务,这样比用crontab好的是可以在web界面看结果和状态以及有邮件提醒之类的
当然jenkins会占用比较多资源,buildbot占用得比较少
9hills
2015-01-09 15:27:04 +08:00
@pheyx 呵呵,你写过几个定时任务在几台机器上跑过?常年10w+机器定时执行任务的路过,用crontab?

10w机器crontab,我就问你一句话,错误处理怎么搞,别告诉我说发邮件,你也不怕邮箱爆掉?

Cron分为单机Cron和分布式Cron,每个都是一门学问。就以单机Cron来说,Crontab最少有以下弱点

1. 无可靠的报警机制,只能靠发邮件,我想发短信怎么搞?我想连续失败3次再报警怎么搞?我想首次失败发邮件,连续10次失败发短信怎么搞?我想最大连续报警次数为1怎么搞(比如每分钟执行,假如半夜突然有个问题导致失败,难道连发N封?)我想白天发邮件,晚上发短信怎么搞?我想晚上不发报警怎么搞?

2. 缺乏超时控制。我想控制cron为单实例怎么搞?(默认的cron是到点启动一个,不管前一个是否执行完成,如果卡住了,呵呵),我想加个超时报警怎么搞,我想加个最大超时时间到时强制kill怎么搞?

3. 缺乏执行日志。我想知道过去X天的执行情况,怎么看?我想看某次任务的执行日志,怎么看?

4. 需要第三方工具来实现自动化。这个就不提了。


至于分布式cron,学问就更深了,别一知半解就开始瞎喷
xierch
2015-01-09 17:17:01 +08:00
学校机子上有个爬虫用的 crontab
那程序每次运行都有一定几率卡在网络连接上
天长日久日久天长,32G swap 全部填满,32G 内存也所剩无几...

(我不会说是我开 MC 的时候被 JVM 报内存不足才发现的(

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/160603

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX