我有一台服务器,我想专门用于通过 LibreOffice 转换doc
文件pdf
。该服务器有 6 个核心,而 LibreOffice 是单线程的。这意味着生成一个 pdf 文件会占用我总 CPU 功率的 16.666%。转换文件可以从控制台完成,并且是一项阻塞任务,即它会等到完成后才将控制权返回给控制台。
我可以启动 6 个无头办公室实例(在 6 个不同的端口上),并通过一些自定义代码确保每个工作请求都发送到不同的实例。我必须检查所有 6 个实例是否都在忙于工作,以便将工作保存在待处理队列缓冲区中。我还必须管理超时/错误,以便重新启动特定实例并尝试重做导致问题的特定工作,可能还要再尝试 1-2 次,直到我放弃。
上述场景不会为单个文档使用 100% 的 CPU,但它允许一次转换最多 6 个文档,而不是仅以 16.6% 的功率一个接一个地处理它们。
我的问题是:是否存在可以管理这种情况的产品/工具?可能是可以协调此类任务的通用产品(当然,不知道 LibreOffice 的具体细节)。
答案1
你可能想看看GNU并行:
GNU parallel 是一个使用一台或多台计算机并行执行作业的 shell 工具。
文档中有很多示例,包括GNU Parallel 作为目录处理器你应该看一下。
当然,您需要为此编写相当多的脚本,最后您甚至可能会得出结论,在脚本中完成整个调度也更容易。