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

时间:2016-10-06 05:57:02

标签: c# .net vb.net

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

Generating pdfs using phantomsj + C#

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

一切正常,但我担心的是,在生产服务器上,我们每分钟可能会获得数千个html文件,并且对于每个html文件,运行phantomjs。后台工作人员是否会为每个文件启动一个phantomjs进程而使服务器挨饿?

谢谢

2 个答案:

答案 0 :(得分:0)

您必须考虑许多因素。

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

我们无法确定您的确切需求,您必须亲自测试并确认。

答案 1 :(得分:0)

虽然您的解决方案应该可以正常工作,但它似乎不会扩展得太好。您的机器最终会因资源不足而出现问题需要多长时间取决于请求的频率以及后台工作人员需要完成的工作量。

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

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

您可以使用类似Rabbit MQ的内容来处理排队,或者推出自己的排队方式。如果需要,前一个选项可能会更容易扩展。