问题标签 [job-scheduling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - 具有 MongoDB 作业存储的 Scala 作业调度程序
我正在寻找在 Scala 中使用的简单 Job Scheduler,它可以在 Mongo 中存储作业,或者至少可以简单地扩展为使用 Mongo 作为存储。
任何人都可以提出最好的解决方案吗?
javascript - 使用 Node.js 和 Kue,有没有办法指定我希望任务执行的日期?
显然,我可以将延迟设置为我想要的日期之前的毫秒数,但在某些情况下这并不能很好地工作,最大 int 值将是一个问题。如果 Kue 做不到,我可以将距离太远的特定日期作业存储在面向客户端的应用程序使用的主数据库中,或者可能是第三个商店,我只是想避免使用多个商店这个过程。
更新:这是一个愚蠢的问题,我很快就在脑海中做了一些数学运算,但可怕地失败了,我猜,然后问,我应该在我问之前准确计算。
algorithm - 临时作业分配的资源调度算法
我们正在开发一个使用后端服务器池来处理不同作业的系统。我正在寻找一种算法,该算法将允许为传入的作业请求分配资源。
事先不知道工作的清单或时间表。所以工作的资源分配需要在收到工作请求时进行,我不能提前为所有工作制定完整的计划。不同的作业也会有不同的优先级。更糟糕的是,作业的确切执行时间也无法提前知道。
我们开发了一些工具,这些工具将为我的调度程序提供每个服务器的性能/负载信息。因此,此信息可用于调度目的。
现在基于这些要求和约束,任何人都可以指出任何可用于为此类动态/临时作业开发调度引擎的算法吗?
java - 当石英作业触发时,它是一个新的作业类实例吗?
我对 Quartz 很陌生,我对工作的生命周期有些怀疑。
假设我有一个工作被配置为做一些事情。
作业触发并结束其工作。当它再次触发时,它是同一个实例(可能被调度程序设置为睡眠和唤醒)还是一个新的作业实例(一旦作业结束,它被杀死并且当再次满足触发条件时创建一个新的作业实例) ?
我问这样的问题是因为当我调试我的应用程序(spring 3 mvc 支持石英)时,我会看到作业的新实例和 SimpleThreadPool$WorkerThreadRun() 的新线程,每次触发作业时都会打开 SimpleThreadPool$WorkerThreadRun()线程堆积起来并且永远不会终止。
我只是想知道这种行为是否可以,或者我一定要填满内存;-)
谁能给我一些解释?提前致谢。
linux - bash - 尝试通过管道将命令运行到单独的函数时出错
我正在尝试使用此功能来轻松并行化我的 bash 脚本工作。这个想法很简单;我不是按顺序运行每个命令,而是将我想运行的命令传递给这个函数,它在读取行时执行;为我运行 bg 中的工作并照顾后勤....虽然它不起作用。我在执行东西的地方添加了 set -x ,看起来我在想要执行的东西周围得到了奇怪的引号......我该怎么办?
当我运行它时,我得到如下输出:
algorithm - 车间调度:我应该考虑哪些解决方案?
给定一家软件公司,其中开发人员在多个不同项目的团队中工作。项目需要指定开发人员的特定技能。出于我的目的,我想保持简单并将其限制为一种技能,即编程语言。所以有些项目需要Java,有些需要C等。项目有固定的持续时间,每个项目应该有两个开发人员分配给它。
在任何时间点,一些项目正在进行中,新项目进来,需要在未来的某个时间点进行计划。我想计算一个时间表,哪些开发人员应该在什么时间和什么项目上工作。
我不是在寻找最佳解决方案(如果可能的话)。我对人类经理可以创建的时间表感到满意。
我读过关于资源约束调度问题和分配问题的文章,但我很少接受正式的 CS 培训,而且我经常迷失在这些问题的不同变体中的所有细微差别中。
我认为我的问题是作业车间调度的一个更简单的变体,其中作业是项目,开发人员是机器,因此作业需要同时多台机器。只有一个先例约束,即运行中的项目不能中止,因此必须先完成。
从我读过的所有可能的解决方案中,我倾向于使用遗传算法,主要是因为我读过人们使用它们得到了很好的结果,并且因为我前一段时间将一个用于另一个项目。我也读过线性规划的好结果,但我对此知之甚少。
遗传算法是否是此类问题的可行解决方案?还是有更好的解决方案?
c# - C# - 具有系统时间意识的 Windows 服务
我正在考虑编写一个 Windows 服务,该服务将在用户指定的时间打开或关闭某些功能(使用我将提供的配置实用程序)。基本上,用户会指定 PC 进入“仅工作”模式的特定时间(阻止 Facebook 和其他分散注意力的网站),然后当这些时间结束时,PC 将返回正常模式。
我已经想出了几种创建“仅工作”模式的方法,但我正在努力解决的是如何知道何时进入和退出该模式。如果可以避免的话,我真的不想使用线程和计时器,因为这似乎会产生大量开销,所以我正在寻找的方法是:
- 如果有某种 timeChanged() 事件要检查,则连接到 Windows API
- 使用某种预建库在指定时间触发事件
- 其他一些我没有想到的方法是优雅而美妙的
有谁知道做到这一点的最佳方法?
node.js - nodejs作业服务器(多用途)
我还很新,刚开始了解 node.js(作为 PHP 开发人员的背景)。我在 nodejs 网站上看过一些 nodeJs 示例和视频。
目前我正在运行一个视频网站,并且在后台必须执行很多任务。目前这是由调用 php 脚本的 cronjobs 完成的。这种方法的缺点是,当前一个进程仍在工作时启动另一个进程时,您会在服务器等上获得高负载。
需要在服务器上完成的工作如下:
- 从网站上抓取提要并将它们插入 mysql 数据库
- 从网站获取数据(抓取)(根据要求)
- 生成用于报告的数据。这些主要是需要执行的 mysql 查询。
未来需要完成的任务
- 记录视频浏览量(当用户访问视频页面时)(这也将记录到 mysql 中)
- 一般记录访问者
- 根据搜索到的视频展示广告
我希望能够调用一个 url,以便可以将作业排队,并且还能够按时间安排作业,或者它们可以持续运行。
我不知道 node.js 是否是要遵循的路径,这就是我在这里问它的原因。在节点中这样做有什么好处?下站?
node.js 的专业人士是什么?
感谢您的回复!
shell - 小规模负载均衡
我有一系列的工作需要完成;作业之间没有依赖关系。我正在寻找一种工具来帮助我将这些工作分配给机器。唯一的限制是每台机器一次只能运行一个作业。我正在尝试最大化吞吐量,因为工作不是很平衡。由于我预先构建了每台机器的作业队列,我目前的组合 shell 脚本效率较低,并且无法将作业从负载繁重的机器的队列移动到正在等待的机器,已经完成了所有工作。
以前的建议包括 SLURM,这看起来有点过分,甚至更过分的 LoadLeveller。
GNU Parallel 看起来几乎正是我想要的,但是远程机器不支持 SSH;使用了一个自定义作业启动器(没有排队功能)。我想要的是 Gnu Parallel,其中机器可以在调度作业之前动态替换为 shell 脚本。
所以,总结一下:
- 作业列表+可以接受的机器列表:最大化吞吐量。尽可能靠近外壳是首选。
在最坏的情况下,某些东西可以与 bash 的锁定文件一起被破解,但我觉得好像在某个地方必须存在更好的解决方案。
instance - Spring Batch:忽略可重启属性
我有一个批处理作业,我想每分钟运行一次。调度程序按计划每分钟启动一次作业,但在第一次启动后,将使用相同的作业实例。我的 ItemReader 中有一个标志,一旦代码执行一次就会触发,因此每次后续启动都使用相同的实例,在第一次运行后不会读取任何新内容。
我查看了文档(http://static.springsource.org/spring-batch/reference/html/configureJob.html),它说将作业bean的restartable属性设置为false。这应该强制每次调用都创建一个新实例(第 4.1.1 节可重启性)。
这并没有解决问题。如果我写出“this.hashCode()”,每次调用读取器类时都会得到相同的哈希 ID。
我尝试将可重启属性放在作业及其父级(SimpleJob 的扩展)上,但两者都没有帮助。
我还在作业启动器的 jobParameters 中附加了一个时间戳,因此每个作业都有唯一的参数。这仍然不能解决它。作业名称始终相同。
有什么我想念的吗?