Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在RubyonRails上数据库空闲时运行作业_Ruby On Rails_Database_Heroku_Delayed Job - Fatal编程技术网

Ruby on rails 在RubyonRails上数据库空闲时运行作业

Ruby on rails 在RubyonRails上数据库空闲时运行作业,ruby-on-rails,database,heroku,delayed-job,Ruby On Rails,Database,Heroku,Delayed Job,我有一个使用Heroku的ruby on rails应用程序。我需要在我们的数据库上运行导入/导出任务,这些任务会锁定整个系统,因为它们对数据库来说太重了。是否有一种方法可以告诉系统仅在数据库未被使用时运行这些任务?没有内置的方法来安排这样的作业。不过,你可以做一些事情 安排作业在一天中最不繁忙的时间运行。这将取决于您的业务、客户群等,但希望有一个比其他窗口更合适的窗口 您可以编写批处理作业以运行更长的时间,执行较小的工作单元。在每个工作单元之间,睡眠几秒钟,或者查看当前平均负载,然后根据平均

我有一个使用Heroku的ruby on rails应用程序。我需要在我们的数据库上运行导入/导出任务,这些任务会锁定整个系统,因为它们对数据库来说太重了。是否有一种方法可以告诉系统仅在数据库未被使用时运行这些任务?

没有内置的方法来安排这样的作业。不过,你可以做一些事情

  • 安排作业在一天中最不繁忙的时间运行。这将取决于您的业务、客户群等,但希望有一个比其他窗口更合适的窗口

  • 您可以编写批处理作业以运行更长的时间,执行较小的工作单元。在每个工作单元之间,睡眠几秒钟,或者查看当前平均负载,然后根据平均负载决定要做什么。这将降低批处理作业的影响

  • 让网站在某个地方更新一个“锁”,要么在数据库中,要么在memcached中,要么在其他地方。如果您的正常网站使用更新了数据库,您可以在上查看现有的
    updated\u。然后,只有在一段时间内没有任何活动时才进行批处理。当然,这并不能保证新用户不会在批处理作业运行的同时出现,但这可能是找到一个网站使用率较低的窗口的一种方法


    • 没有内置的方法来安排这样的工作。不过,你可以做一些事情

      • 安排作业在一天中最不繁忙的时间运行。这将取决于您的业务、客户群等,但希望有一个比其他窗口更合适的窗口

      • 您可以编写批处理作业以运行更长的时间,执行较小的工作单元。在每个工作单元之间,睡眠几秒钟,或者查看当前平均负载,然后根据平均负载决定要做什么。这将降低批处理作业的影响

      • 让网站在某个地方更新一个“锁”,要么在数据库中,要么在memcached中,要么在其他地方。如果您的正常网站使用更新了数据库,您可以在上查看现有的
        updated\u。然后,只有在一段时间内没有任何活动时才进行批处理。当然,这并不能保证新用户不会在批处理作业运行的同时出现,但这可能是找到一个网站使用率较低的窗口的一种方法

        • 它也值得一读

          它也值得一读