在生产服务器上每分钟启动进程数千次

本文关键字:千次 进程 启动 服务器 每分钟 | 更新日期: 2023-09-27 18:11:40

为了将一些html文件转换为pdf,我设法使用这个SO答案实现了一个快速解决方案。

使用phantomsj + c#生成pdf文件

本质上,它是一个webapi服务,在接收html文件时,将条目放入消息队列。后台工作器拾取条目,使用phantomjs.exe呈现pdf,并稍后通过电子邮件发送。

这一切都可以工作,但我担心的是,在生产服务器上,我们可能会每分钟获得数千个html文件,对于每个html文件,运行phantomjs。后台工作器为每个文件启动一个phantomjs进程会使服务器饿死吗?

谢谢

在生产服务器上每分钟启动进程数千次

你必须考虑很多因素。

  • 你必须知道有多少后台工作线程正在运行来完成任务。
  • 你需要知道服务器规格,因为更多的处理意味着更多的CPU使用。
  • 在进入生产服务器之前,您需要先在测试环境上进行压力测试。您的测试环境应该具有与您的生产环境相同的规格。

我们无法确定你的确切需求,你必须自己测试和确认。

虽然您的解决方案应该可以工作,但它似乎不能很好地扩展。你的机器需要多长时间才会出现资源不足的问题,这取决于请求的频率以及后台工作人员需要做的工作量。

将前端与PDF生成分离是朝着正确方向迈出的一步,但是让它们在同一台机器上运行仍然会对整个站点产生影响(同样,影响将取决于HTML文件的频率和大小)。

你能做的是,有另一台机器(或一组机器)来处理电子邮件的转换和传输。这将使您的前端机器可以自由地处理传入的请求。

您可以使用像Rabbit MQ这样的东西来处理您的队列,或者推出您自己的队列。如果需要的话,前一个选项可能更容易扩展。