V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
haython
V2EX  ›  问与答

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

  •  1
     
  •   haython · 2015-01-09 13:13:23 +08:00 · 5821 次点击
    这是一个创建于 3607 天前的主题,其中的信息可能已经有所发展或是发生改变。
    各种定时执行的脚本,长驻的脚本,怎么监控,怎么定时执行的(暂时用的crontab),如果是crontab执行我,我现在要看执行的结果是不是正确怎么搞?有没有一个比较成熟的方案来借鉴啊
    8 条回复    2015-01-09 17:17:01 +08:00
    wwwap
        1
    wwwap  
       2015-01-09 13:18:11 +08:00   ❤️ 2
    supervisor
    9hills
        2
    9hills  
       2015-01-09 13:24:26 +08:00   ❤️ 1
    crontab is bad.

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

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

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

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

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

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

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

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

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

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

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


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

    (我不会说是我开 MC 的时候被 JVM 报内存不足才发现的(
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2665 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:59 · PVG 13:59 · LAX 21:59 · JFK 00:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.