Node.js / Express应用程序中的群集进程阻止

奥图卢库

我正在使用Express框架开发Node.js应用程序,并且使用集群来处理负载。在测试中,我注意到,如果由于某种原因其中一个过程需要很长时间才能加载,它也会影响其他后续请求。我为此做了一个简单的测试用例:

https://gist.github.com/anonymous/7325816

使用“ node app.js”运行示例,并尝试http://localhost:8080/slow在一个浏览器窗口中http://localhost:8080/fast立即加载(其阻塞计算需要几秒钟),然后立即在另一个窗口中加载,后者也需要花费几秒钟的时间来加载。

如果我理解正确,那是因为运行计算的同一个进程正在尝试处理新请求:但是如何避免这种情况呢?

编辑:

这是运行/ slow后运行Siege的HTTP请求的输出:

HTTP/1.1 200   0.01 secs:      89 bytes ==> GET  /fast
HTTP/1.1 200   6.32 secs:      89 bytes ==> GET  /fast
HTTP/1.1 200   0.01 secs:      89 bytes ==> GET  /fast
HTTP/1.1 200   6.84 secs:      89 bytes ==> GET  /fast
HTTP/1.1 200   0.00 secs:      89 bytes ==> GET  /fast
HTTP/1.1 200   7.41 secs:      89 bytes ==> GET  /fast
HTTP/1.1 200   0.00 secs:      89 bytes ==> GET  /fast
HTTP/1.1 200   9.04 secs:      89 bytes ==> GET  /fast

编辑2:

问题是OSX上运行的Node.js的最新Git版本(v0.11.9-pre):运行当前版本v0.10.21,它可以正常运行,而无需将请求传输到阻止的进程。感谢@goten的建议!

天沟

如果您有多个CPU内核,则群集应运行多个进程。在那里很好解释了http://rowanmanning.com/posts/node-cluster-and-express/

var http = require('http');
var cluster = require('cluster');
var express = require('express');

if(cluster.isMaster){
    //count the CPU
    var cpuCount = require('os').cpus().length;

    // Create a worker for each CPU
    for (var i = 0; i < cpuCount; i += 1) {
        cluster.fork();
    }
}
else{
    var app = express();
    var server = http.createServer(app);

    app.get('/slow', function(req, res){
        someSlowFunction();
    });
    app.get('/fast', function(req, res){
        someFasterFunction();
    });

    server.listen(3000);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在使用群集模块的Node.js应用程序中运行Cron Job?

来自分类Dev

Node.js中的响应式IP阻止,节点应用程序安全

来自分类Dev

如何正确阻止Node.JS服务器应用程序中的IP地址?

来自分类Dev

如何在Node.js和Express.js应用程序中设置HttpOnly标志?

来自分类Dev

在 .NET Core 应用程序中可靠地终止通过 cmd 进程启动的 node.js 进程

来自分类Dev

启动Node.js Express应用程序

来自分类Dev

Node.js Express应用程序生产部署

来自分类Dev

告诉Mongoose使用哪个数据库-在node.js Express应用程序中

来自分类Dev

Node.JS / Express应用程序中的Jade模板找不到外部Javascript文件?

来自分类Dev

var app = express();的用途是什么?在创建Node.Js应用程序的过程中?

来自分类Dev

app..get()在Node.js Express应用程序中似乎不起作用

来自分类Dev

Express Node.js应用程序中的全局服务器会话

来自分类Dev

并发如何在Node.js + Express应用程序中工作?

来自分类Dev

如何在node / mean / express应用程序中拆分index.js文件?

来自分类Dev

在Node.js Express框架中的不同端口上运行多个应用程序

来自分类Dev

如何在Node.js Express应用程序中为用户提供下载窗口选项

来自分类Dev

node.js/express 应用程序中的错误:发送后无法设置标头

来自分类Dev

如何在群集模式下使用pm2启动node.js应用程序?

来自分类Dev

我是否应该考虑在应用程序引导过程中阻止I / O的坏习惯?(node.js)

来自分类Dev

通过子进程与Java应用程序连接后如何在node.js中写入文件

来自分类Dev

在Node.js中查询应用程序名称

来自分类Dev

在Node.js应用程序中遍历'__dirname'

来自分类Dev

Node.js应用程序中的域驱动设计

来自分类Dev

node.js应用程序中的openlayers-3?

来自分类Dev

从Angular应用程序调用Node.js中的函数

来自分类Dev

MongoDB无法在node.js应用程序中更新?

来自分类Dev

Node.js应用程序环境中的Redis

来自分类Dev

问题包括Node应用程序中的js文件

来自分类Dev

node.js 应用程序中的阻塞功能

Related 相关文章

  1. 1

    如何在使用群集模块的Node.js应用程序中运行Cron Job?

  2. 2

    Node.js中的响应式IP阻止,节点应用程序安全

  3. 3

    如何正确阻止Node.JS服务器应用程序中的IP地址?

  4. 4

    如何在Node.js和Express.js应用程序中设置HttpOnly标志?

  5. 5

    在 .NET Core 应用程序中可靠地终止通过 cmd 进程启动的 node.js 进程

  6. 6

    启动Node.js Express应用程序

  7. 7

    Node.js Express应用程序生产部署

  8. 8

    告诉Mongoose使用哪个数据库-在node.js Express应用程序中

  9. 9

    Node.JS / Express应用程序中的Jade模板找不到外部Javascript文件?

  10. 10

    var app = express();的用途是什么?在创建Node.Js应用程序的过程中?

  11. 11

    app..get()在Node.js Express应用程序中似乎不起作用

  12. 12

    Express Node.js应用程序中的全局服务器会话

  13. 13

    并发如何在Node.js + Express应用程序中工作?

  14. 14

    如何在node / mean / express应用程序中拆分index.js文件?

  15. 15

    在Node.js Express框架中的不同端口上运行多个应用程序

  16. 16

    如何在Node.js Express应用程序中为用户提供下载窗口选项

  17. 17

    node.js/express 应用程序中的错误:发送后无法设置标头

  18. 18

    如何在群集模式下使用pm2启动node.js应用程序?

  19. 19

    我是否应该考虑在应用程序引导过程中阻止I / O的坏习惯?(node.js)

  20. 20

    通过子进程与Java应用程序连接后如何在node.js中写入文件

  21. 21

    在Node.js中查询应用程序名称

  22. 22

    在Node.js应用程序中遍历'__dirname'

  23. 23

    Node.js应用程序中的域驱动设计

  24. 24

    node.js应用程序中的openlayers-3?

  25. 25

    从Angular应用程序调用Node.js中的函数

  26. 26

    MongoDB无法在node.js应用程序中更新?

  27. 27

    Node.js应用程序环境中的Redis

  28. 28

    问题包括Node应用程序中的js文件

  29. 29

    node.js 应用程序中的阻塞功能

热门标签

归档