【问题标题】:How to increase performance of bash scripts called by child_process's如何提高 child_process 调用的 bash 脚本的性能
【发布时间】:2016-06-21 02:27:45
【问题描述】:

我正在使用 pdftotext 从多个 PDF 中并行提取文本, 混合使用child_process.spawnasync.mapLimit 来限制并发数。

我的问题是关于性能的。我对 CPU 密集型工作有点迷茫。 我正在使用Node.js 打开进程,这意味着我正在执行 CPU 密集型操作 使用Node.js(因为这是他的子进程),或者我正在使用bash?

有什么方法可以提高性能吗?该程序通常需要几个小时才能完成一项工作,因为文件的数量 + 它们的大小。坦白说我对 bash 不是很了解,有什么可以改善并行处理的吗?

【问题讨论】:

  • xargs。这还取决于您的系统在 CPU/RAM/磁盘方面是否平衡良好,以及系统是否运行良好。如果您依赖 SAN 磁盘阵列,您需要确保它正常运行。 (对不起,我不能给你一个简单的测试,但是尝试对gzip -c 1GBfile > /mount/path/1/1GBfile.gz 对你的/mount 文件系统的许多子部分进行基准测试,并注意哪些比本地磁盘花费的时间要长得多。(这是一个多学科的主题部分杂志文章,所以戴上你的思考帽;-))。祝你好运。
  • 您可以尝试使用 .exec .execFile 或 .fork 而不是 .spawn。我相信如果你有大型的单一任务,spawn 是最合适的。 dzone.com/articles/…

标签: node.js bash child-process pdftotext


【解决方案1】:
  1. 您可以尝试使用 .exec、.execFile 或 .fork 代替 .spawn。我相信如果您有大型单一任务,您正在使用的 spawn 是最合适的。 见:https://dzone.com/articles/understanding-execfile-spawn-exec-and-fork-in-node

  2. 运行系统监控工具tophtop 并在处理运行时观察您的CPU 消耗:是否所有内核都已满?这样您就可以确定 CPU 是否是您当前的瓶颈。

  3. 可能是 pdftotext 本身就很慢。你能找到更快的库或从 Node 切换到其他库吗?快速节点库的一个迹象可能是该库只是一组 C 绑定。

【讨论】:

    猜你喜欢
    • 2020-06-05
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多