SOS-Berlin JobScheduler进程队列逻辑
SOS-Berlin JobScheduler process queue logic
我们 运行在 Windows 上遇到了 SOS-Berlin JobScheduler 运行 的一个问题,该问题很难诊断*,我将不胜感激任何指导。
*很难,因为我不懂 Scala(虽然我懂 C++ 和 Java)。很难浏览这个代码库(其中一些是德语的)。
我们有一个名为 Foo 的进程-class,它有时会超出进程数量限制 运行。因此,例如,我们将 process-class 限制为 30 个进程,而 60 想 运行。这剩下 30 运行ning 和 30 "waiting for process."
问题是 JobScheduler 似乎没有优先处理正在等待进程的 30 个。相反,任何在爆发后被解雇的新工作都会接收进程,从而使一些工作无限期地等待。一旦作业数量 "waiting for process" 归零,作业将立即清除。
此外,似乎当有大量作业时 "waiting for process," 任务的 运行 时间会增加一倍或三倍。通常 运行 需要 20 秒的作业将激增至 1-2 分钟,进一步放大问题,因为进程没有释放回池中。
诚然,我们正在 运行 旧版本的 JS,我们计划在 this/next 周升级它。但是,我想知道我们是否遗漏了一些基本的东西。我们关闭了日志记录,寻找数据库锁,向堆中添加内存,关闭服务器上的一些其他进程。我们还增加了进程池,但我们不想把它推得太远,以免压垮服务器。似乎没有什么可以缓解这个问题。
任何调整帮助将不胜感激!
作为 follow-up,我们确定了问题的原因。
另一个用户一直在使用临时目录来存储中间生成的文件。用户没有清除这些文件,导致目录中有数百个文件。它们不是很大,所以我们没有注意到。出于某种原因,Job Scheduler 开始因此而窒息。我不清楚原因。
清除临时目录、责骂用户并修复他的脚本解决了问题。
我们 运行在 Windows 上遇到了 SOS-Berlin JobScheduler 运行 的一个问题,该问题很难诊断*,我将不胜感激任何指导。
*很难,因为我不懂 Scala(虽然我懂 C++ 和 Java)。很难浏览这个代码库(其中一些是德语的)。
我们有一个名为 Foo 的进程-class,它有时会超出进程数量限制 运行。因此,例如,我们将 process-class 限制为 30 个进程,而 60 想 运行。这剩下 30 运行ning 和 30 "waiting for process."
问题是 JobScheduler 似乎没有优先处理正在等待进程的 30 个。相反,任何在爆发后被解雇的新工作都会接收进程,从而使一些工作无限期地等待。一旦作业数量 "waiting for process" 归零,作业将立即清除。
此外,似乎当有大量作业时 "waiting for process," 任务的 运行 时间会增加一倍或三倍。通常 运行 需要 20 秒的作业将激增至 1-2 分钟,进一步放大问题,因为进程没有释放回池中。
诚然,我们正在 运行 旧版本的 JS,我们计划在 this/next 周升级它。但是,我想知道我们是否遗漏了一些基本的东西。我们关闭了日志记录,寻找数据库锁,向堆中添加内存,关闭服务器上的一些其他进程。我们还增加了进程池,但我们不想把它推得太远,以免压垮服务器。似乎没有什么可以缓解这个问题。
任何调整帮助将不胜感激!
作为 follow-up,我们确定了问题的原因。
另一个用户一直在使用临时目录来存储中间生成的文件。用户没有清除这些文件,导致目录中有数百个文件。它们不是很大,所以我们没有注意到。出于某种原因,Job Scheduler 开始因此而窒息。我不清楚原因。
清除临时目录、责骂用户并修复他的脚本解决了问题。