Ruby on rails 在RubyonRails上数据库空闲时运行作业
我有一个使用Heroku的ruby on rails应用程序。我需要在我们的数据库上运行导入/导出任务,这些任务会锁定整个系统,因为它们对数据库来说太重了。是否有一种方法可以告诉系统仅在数据库未被使用时运行这些任务?没有内置的方法来安排这样的作业。不过,你可以做一些事情Ruby on rails 在RubyonRails上数据库空闲时运行作业,ruby-on-rails,database,heroku,delayed-job,Ruby On Rails,Database,Heroku,Delayed Job,我有一个使用Heroku的ruby on rails应用程序。我需要在我们的数据库上运行导入/导出任务,这些任务会锁定整个系统,因为它们对数据库来说太重了。是否有一种方法可以告诉系统仅在数据库未被使用时运行这些任务?没有内置的方法来安排这样的作业。不过,你可以做一些事情 安排作业在一天中最不繁忙的时间运行。这将取决于您的业务、客户群等,但希望有一个比其他窗口更合适的窗口 您可以编写批处理作业以运行更长的时间,执行较小的工作单元。在每个工作单元之间,睡眠几秒钟,或者查看当前平均负载,然后根据平均
- 安排作业在一天中最不繁忙的时间运行。这将取决于您的业务、客户群等,但希望有一个比其他窗口更合适的窗口
- 您可以编写批处理作业以运行更长的时间,执行较小的工作单元。在每个工作单元之间,睡眠几秒钟,或者查看当前平均负载,然后根据平均负载决定要做什么。这将降低批处理作业的影响
- 让网站在某个地方更新一个“锁”,要么在数据库中,要么在memcached中,要么在其他地方。如果您的正常网站使用更新了数据库,您可以在上查看现有的
updated\u。然后,只有在一段时间内没有任何活动时才进行批处理。当然,这并不能保证新用户不会在批处理作业运行的同时出现,但这可能是找到一个网站使用率较低的窗口的一种方法
- 安排作业在一天中最不繁忙的时间运行。这将取决于您的业务、客户群等,但希望有一个比其他窗口更合适的窗口
- 您可以编写批处理作业以运行更长的时间,执行较小的工作单元。在每个工作单元之间,睡眠几秒钟,或者查看当前平均负载,然后根据平均负载决定要做什么。这将降低批处理作业的影响
- 让网站在某个地方更新一个“锁”,要么在数据库中,要么在memcached中,要么在其他地方。如果您的正常网站使用更新了数据库,您可以在上查看现有的
updated\u。然后,只有在一段时间内没有任何活动时才进行批处理。当然,这并不能保证新用户不会在批处理作业运行的同时出现,但这可能是找到一个网站使用率较低的窗口的一种方法
- 没有内置的方法来安排这样的工作。不过,你可以做一些事情
- 它也值得一读它也值得一读