我有一个使用 Heroku 的 ruby on rails 应用程序。我需要在我们的数据库上运行诸如导入/导出任务之类的东西,这些任务会锁定整个系统,因为它们对数据库来说太重了。有没有办法告诉系统只在那一秒不使用数据库时才运行这些任务?
问问题
423 次
2 回答
1
没有内置的方法来安排这样的工作。不过,您可以做一些事情。
安排作业在一天中最不忙的时间运行。这将取决于您的业务、客户群等,但希望有一个比其他窗口更合适的窗口。
您可以编写批处理作业以运行更长时间,执行小单元工作。在每个工作单元之间,睡眠几秒钟,或者查看当前的平均负载,并据此决定要做什么。这应该会降低批处理作业的影响。
让网站在某个地方更新“锁”,无论是在数据库中还是在 memcached 中或其他地方。如果您的正常网站使用更新了数据库,您可以查看现有的
updated_at
. 然后只在一段时间没有任何活动时才进行批处理。当然,这并不能保证新用户不会在批处理作业运行的同时弹出,但这可能是一种查找站点使用较少的窗口的方法。
于 2010-02-15T07:17:26.873 回答
0
于 2010-02-15T13:50:48.110 回答