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