- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
请原谅我的无知,我目前正在学习如何使用来自 PHP 背景的 Node,我真的没有与 Apache 或服务器管理交互。我正在使用 Heroku 托管我的 Node 项目,直接从 Cloud9 IDE 推送。
根据我的阅读,Heroku dyno 是一个单一的 Web 进程,购买额外的 dyno 可以让您处理更多的流量,因为通过增加 dyno 可以增加您可以处理的请求量的大小在任何时候。
我知道 Node 是一个单线程系统,它逐个处理请求,允许您为可能需要一些时间来处理的任何事情(如数据库请求、处理文件等)生成子进程。
那么,如果我使用单个测功机生成一个子进程,Heroku 会发生什么?这不需要另一个测功机来工作吗?当然,如果 Node 正在运行一个进程并且我的单个测功机中只有一个进程可用,那么任何额外的进程也必须由该进程处理吗?
还是我这一切都错了?
最佳答案
您对 exec 的理解大致正确,我担心的是您在不需要时使用它...在您的问题中,您只提到了操作的 I/O 类型,哪个 Node 在其中非常有效地处理它单线程事件模型的处事。尽管是单线程的,但事件模型允许代码在不阻塞主事件循环的情况下运行(除非您正在执行非常 CPU 密集型操作......,其中不包括数据库请求和文件处理)话虽如此,您应该不需要启动额外的测功机来做你想做的事。
将测功机视为单处理器计算机。无论您可以在具有单个处理器的机器上做什么,您都可以在您的测功机上执行任何操作,无需额外费用或创建测功机。但是,测功机的内存确实比单核处理器计算机可以利用的内存少得多。因此,您希望生成的任何子进程都不需要另一个 dyno 来运行。您希望运行的每个主进程都需要自己的测功机。
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('An amount of data that will take 1 second to send');//This will not block the event loop
}).listen(1337, '127.0.0.1');
var http = require('http');
http.createServer(function (req, res) {
while(true) {
break after 1 second; //this will block the event loop for 1 second
}
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
考虑上面代码中的两个服务器。两台服务器都有大约一秒钟的工作要做。第一个示例每秒可以处理数千个请求,第二个示例只有 1. 发送数据、数据库请求、服务器请求、文件 IO 等......所有的行为都与第一个示例一样...... Node 中很少有东西表现得像第二个例子。如果您有适合第二个示例的内容,那么您最好选择一种不同的语言,而不是试图强制 Node 为它设计得很差的用例工作。
关于Heroku 上的 Node.js 子进程与单个 Dyno,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17146491/
我正在尝试使用 Heroku Scheduler 在已部署的 Heroku 应用程序中调用 HTTP 端点,它基本上以固定速率在 Heroku bash 上运行命令。 当我运行 $ heroku ru
我有一个在 Heroku 上运行的应用程序,其中有一些我想不时更改的设置,并且我想使用 Heroku 配置变量来存储这些设置,以便它们持久存在。 我知道我可以从 Heroku 仪表板或 Heroku
我从模板 reagent-frontend 创建了一个 ClojureScript Reagent 应用程序。如何将生产应用程序部署到 Heroku?在为生产构建后(lein package/lein
我正在尝试在 heroku 上添加信用卡,然后消息显示“无法验证您的卡,请稍后再试或联系您的金融机构寻求帮助” 最佳答案 这是因为您的银行拒绝付款。 检查您是否输入了所有正确的详细信息 查看您银行的最
首先为我的英语感到抱歉,因为它不是我的母语,我不习惯它,它可能很难理解。 我正在尝试将我的 spike 应用程序连接到 heroku 以获取长期葡萄糖数据。 我在没有“部署分支”步骤的情况下成功完成了
Ec2 实例小时按小时计算。如果你只是启动和关闭一个实例,它仍然算作一小时。 Heroku 如何处理这个?按分钟还是按小时? 让我们假设我的应用程序使用超过 750 免费 Dyno 小时限制 最佳答案
好奇 heroku 如何创建应用程序名称。应用程序名称通常是英文单词,例如bloom-peaks 或formal-trail。一家大公司的 IT 部门也是如此。是否有用于名称生成的 unix 库? 最
有没有人在 Heroku 上成功使用过 docsplit?它有许多二进制依赖项。我已经搜索过,但没有找到任何人这样做。教程会很棒,但我真的很好奇其他人是否成功。 最佳答案 我的搜索没有找到任何做过这件
我想将一个应用程序部署到需要能够生成加密安全随机数的 heroku。我可以使用哪些熵源? 最佳答案 你的 Heroku dyno 基本上是一个 Ubuntu 服务器虚拟机,所以你应该可以访问 /dev
Heroku 可以显示自定义维护页面: heroku config:set MAINTENANCE_PAGE_URL=http://some_server/my_page.html 这需要某些网站的存
我正在开始使用 Heroku,并担心它是否会因我犯的错误而向我收费。例如,填充数据库超过 5MB。 那么,有没有办法为 Heroku 或通知系统设置计费限制,以便在我超过价格限制时发送通知? 先感谢您
如何更新我的 Heroku ,我的 Windows 终端显示以下内容: » Warning: heroku update available from 7.47.7 to 7.52.0. 请帮忙
我在免费的 Dyno 上运行基于 NodeJS 的应用程序,连接到 mongohq-MongoDB。我想迁移它以使用爱好 Dyno,这样做的动机不仅是避免 sleep 时间,而且是为了实现更高的 HT
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
如何将我的生产数据库拉到 heroku 上的暂存服务器? 我有两个 Remote ,production 和 staging。 来自documentation看来我想运行 heroku pg:copy
我有一个域example.com,我想将它用于位于example.herokuapp.com 的rails-app,我很困惑如何去做。 Heroku says "Zone apex domains (
我有一个 sinatra 应用程序,其中有一个 yml 文件来设置环境变量,我使用此方法调用它们 module MyConfig def config environment = ENV["RA
根据各种因素,一整天中,我的应用程序的负载可能会出现非常极端的增加。 那时,我想自动增加测功机的数量。 我想增加加载时间。因此,如果加载页面需要X倍的时间,请增加测功力。否则,请往下走。 这样的东西存
我想知道使用heroku工具栏在heroku帐户之间进行切换的最佳方法是什么。 我曾经有一个个人的heroku帐户,它是我所有职业性的heroku应用程序的协作者。问题是当我想进行一些对财务有影响的更
是否可以停止部署到当前正在构建的 Heroku ( git push heroku )? 类似 heroku run stopit! 顺便提一句。成功部署后回滚不是我想要的。 最佳答案 首先,安装He
我是一名优秀的程序员,十分优秀!