可扩展性,使用的木偶使Node.js应用密集的PDF生成任务?

问题描述 投票:0回答:1

该应用程序的目标是产生一个使用PDF格式的木偶,我们获取数据,建立HTML模板然后用铬无头生成PDF,我们接着,返回一个链接到新生成的PDF文件。

这个问题,是需要花费大约7000毫秒生成PDF,主要是因为三个操纵木偶的功能:启动(启动无头broweser),跳转(导航到HTML模板)和PDF(生成PDF)。

所以具有约7〜8秒回答一个请求,与更多的传入请求或突然激增,它可以很容易地需要大约40到50秒30个同时请求,这是我发现是不可接受的。

经过大量的时间花费在研究上,我会实现群集模块采取多个进程的优势。

但是,除了集群外,还有什么其他可行的方案,以优化的单一实例的时间?

node.js architecture google-compute-engine scalability puppeteer
1个回答
0
投票

有什么考虑?

  1. 考虑到每个应用程序开始调用一次puppeteer.launch。您的转换脚本将只检查是浏览器实例已经存在,并通过调用newPage(),基本上新建选项卡使用它,而不是创建浏览器每次。
  2. 您可以考虑调用时进行拦截Requestpage.on('request', this.onPageRequest); goto()和过滤掉某些类型的页面加载,现在的文件,但你并不需要他们的PDF渲染;你可以滤除外部资源,以及如果您遇到这种情况。
  3. 当使用pdf()您可以从您的服务回报回Buffer,而不是使用文件系统,并返回链接PDF文件的创建位置。这可能会或可能不会加快东西,取决于你的服务设置;反正少IO应该会更好。

这可能是你能为你的应用程序的单一实例做;根据以上规则的执行(几页),PDF与一些图像1-2秒使我。

为了加快东西使用群集。除了将它嵌入到你的应用程序中,你可以考虑使用PM2管理器启动和服务的规模多个实例。

© www.soinside.com 2019 - 2024. All rights reserved.