【发布时间】:2013-06-13 08:18:32
【问题描述】:
请原谅我的无知,我目前正在学习如何使用来自 PHP 背景的 Node,我真的没有与 Apache 或服务器管理交互。我正在使用 Heroku 托管我的 Node 项目,直接从 Cloud9 IDE 推送。
根据我的阅读,Heroku dyno 是一个单一的 Web 进程,购买额外的 dyno 可以让您处理更多的流量,因为通过增加 dyno 可以增加您可以处理的请求量的大小在任何时候。
我知道 Node 是一个单线程系统,它逐个处理请求,允许您为可能需要一些时间来处理的任何事情(如数据库请求、处理文件等)生成子进程。
那么,如果我使用单个测功机生成子进程,Heroku 会发生什么?这不需要另一个测功机来工作吗?当然,如果 Node 正在运行一个进程并且我的单个测功机中只有一个进程可用,那么任何额外的进程也必须由该进程处理?
还是我这一切都错了?
【问题讨论】:
-
您不应该启动单独的节点进程来使数据库请求和文件处理异步发生......不必这样做是nodejs的好处。如果您产生不确定数量的工作“线程/进程”,那么您绝对是在错误地使用 NodeJS。有了这个答案,我相信你应该能够回答你自己的问题。如果您想了解更多详细信息,请告诉我!
-
感谢您的回复,克里斯。我可能没有正确解释自己——我目前对 Node 的了解并没有超出 Node Beginner 书中详细介绍的内容,其中一个示例使用
var exec = require("child_process").exec;,然后在执行时使用exec函数用于演示非阻塞代码的昂贵的 shell 操作。因此,据我了解,在此示例中,shell 操作被推迟到另一个进程,以便主进程可以继续接受新请求,然后接收回调以显示初始请求的响应。 -
我提交了我的 cmets 作为答案。