Nodejs,专用服务器,cpu 密集型任务

Posted

技术标签:

【中文标题】Nodejs,专用服务器,cpu 密集型任务【英文标题】:Nodejs, dedicated server, cpu intensive task 【发布时间】:2017-04-10 12:32:54 【问题描述】:

我正在使用以下过程在 nodejs 上运行的专用服务器上执行 cpu 密集型任务。想知道这是否是正确的方法(作为一个整体的步骤和方法)-

(注意——cpu密集型任务的完成时间并不重要,只要它刚刚完成)

    在同一台机器的不同端口上为 cpu 密集型任务 (CPS) 创建一个 nodejs Web 服务器 (WS) 和另一个 nodejs 服务器 WS 通过 localhost http 请求向 CPS 发送 cpu 密集型任务 CPS 被阻塞,按顺序执行每个任务。 WS 不受 CPS 被阻止的直接影响(我假设这个!)

问题1.如果 CPS 有一个巨大的队列,并且由于 WS 发送的请求而不断增长,会发生什么? 问题 2。 这是一种处理 CPU 密集型工作的坏方法吗?什么是更好的解决方案?

【问题讨论】:

【参考方案1】:

答案 1。如果 CPS 继续对请求进行排队,在某个时间点(在非常大的请求队列中),应用程序的heap size 将超过操作系统限制 -> CPS 将被关闭,丢失所有排队的请求。把这个场景想象成对 CPS 的 DDOS 攻击!

答案 2。如果队列预计会变大,建议使用任务队列(如kue)/消息队列如Redis Simple Messaging Queue (rsmq)。

此时我使用了简单的 HTTP,因为我的负载并不大。我可能会稍后更新这个答案(当我的服务器负载增加时)。

(部分来源来自 *** 上的this question)

【讨论】:

以上是关于Nodejs,专用服务器,cpu 密集型任务的主要内容,如果未能解决你的问题,请参考以下文章

如何让我的 nodejs 应用程序为多个用户服务?

什么算作 CPU 密集型任务(例如排序、搜索等?)[关闭]

node.js适合做啥网站

NodeJs多线程、多进程、定时任务

TAP 和 async/await 是不是意味着用于专用线程?

在 NestJS HTTP 服务器中使用子进程时,受 CPU 限制的进程会阻塞工作池