我有一个使用 express 作为 Web 框架的 NodeJS 应用程序,它公开了一个接收 JSON 文件并使用 json 文件的数据来填充 word 文档模板并生成 PDF 的 API,该 API 作为 API 响应中的下载提供。
对于 JSON to Word 文档,我们使用 carbone.io 库,我相信它会执行以下 IO 操作:
- 阅读 docx 模板
- 写入生成的 word 文件
然后我们的 API 调用 postscript 将 docx 转换为 PDF (libreoffice),然后是生成的 PDF 的 Response.download。
货币非常复杂,特别是考虑到 libuv 的默认线程池大小值为 4。所以,我想通过设置 UV_THREADPOOL_SIZE 来增加线程池大小,但是,我想知道如何计算为我的应用程序运行的不同环境。
该应用程序将在 docker 容器上运行,并且将使用 k8s 部署多个实例,但我真的希望它能够每几秒钟处理多个请求。我们预计该应用程序在初始阶段至少有 100 个请求/秒(不是 TPS,因为整个转换和转换过程需要时间),并随着时间的推移而扩展。
所以我的问题是:我该如何估计 UV_THREADPOOL_SIZE 的合适值?
谢谢!