论坛首页 编程语言技术论坛

rails3项目解析之4——异步和定时任务

浏览 19769 次
精华帖 (6) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-08-06  
目前还是使用crontab + rake,稳定而又简单,耗内存和性能不在考虑之内,应用的规模未到这种层次。
0 请登录后投票
   发表时间:2011-08-09  
我一般都直接用crontab
0 请登录后投票
   发表时间:2011-08-10  
想问下楼主,我配置的resque worker,启动之后,为什么隔几个小时或者一天这个样子,进程就没了,一定要写监控脚本重启worker进程么,我在想,是不是它内部就是这样字的,在没有任务运行,闲置一段时间后,就会自动关闭的。
0 请登录后投票
   发表时间:2011-08-11  
alissa 写道
想问下楼主,我配置的resque worker,启动之后,为什么隔几个小时或者一天这个样子,进程就没了,一定要写监控脚本重启worker进程么,我在想,是不是它内部就是这样字的,在没有任务运行,闲置一段时间后,就会自动关闭的。


上面我也说了:

引用
在实际使用中,发现rake resque:work和rake resque:scheduler两个命令驻留进程后,都会因为某些任务执行时一些莫名其妙的异常而全部退出。trace日志也明确地指出了这一点。因此需要在这两个rake命令之上,加入监控脚本,在rake退出之后重新启动之。


并不是因为闲置才退出的,而是因为exception异常才退出。如果你启动rake的时候加入--trace并且把log重定向到一个文件,就能发现这个问题。所以必须要写个监控脚本定时扫描重启。好在一般都是同时起多个worker,有一个退出了马上重启,对整体没有影响。
0 请登录后投票
   发表时间:2011-08-11  
whenever不是很方便的嘛?
另外,请教为何delayed_job不合适?
0 请登录后投票
   发表时间:2011-08-11  
shanghaichris 写道
whenever不是很方便的嘛?
另外,请教为何delayed_job不合适?

whenever本质上还是cron调用rake或runner,每次rake命令都要重新加载所有的rails环境,速度慢,还多了很多不必要的资源浪费。delayed_job是用数据库来存储任务的,不想再给数据库增加更多负担了。

whenever只有定时任务没有异步任务。

delayed_job只有异步任务没有定时任务。
0 请登录后投票
   发表时间:2011-08-14   最后修改:2011-08-14
根据我的经验,worker莫名退出有2种情况
1. 代码里面没有处理到的一些exception,可以在整个worker代码block中catch Exception,然后输出到错误日志,保证worker本身不会因为出错而中断。

2. 运行worker的shell session中断,ruby进程收到SIGHUP信号而退出,这个问题可以用nohup来运行worker解决。

0 请登录后投票
   发表时间:2011-08-15  
我们现在系统中的定时任务都是通过配置文件来管理的,结合JAVA的定时器定时去扫描,但是系统跑起来,任务少的时候还可以,一旦设备上线多了,速度就降下来了,最要命的时候会出现并发,就是任务阻塞,也不提示任务超时什么的
0 请登录后投票
   发表时间:2012-04-19  
ssjwanghui1988 写道
我们现在系统中的定时任务都是通过配置文件来管理的,结合JAVA的定时器定时去扫描,但是系统跑起来,任务少的时候还可以,一旦设备上线多了,速度就降下来了,最要命的时候会出现并发,就是任务阻塞,也不提示任务超时什么的


也许可以使用god或者monit之类的监视工具
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics