GithubHelp home page GithubHelp logo

pm's People

Contributors

aleafs avatar fengmk2 avatar jason-cooke avatar zjgzx1988 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pm's Issues

关于集成pm与kraken

春哥好,有个问题请教下,我现在想用pm配合kraken来使用,但是发现用起来有问题,集成的时候无法监听端口,请问有什么好办法么

master api:sendto

send message to all workers named by given. Message will be sent by other worker process in most case.

sendto(name, message) {
}

README是不是过时了?

master.register的参数按readme是不正确的啊,我只能是查源码才发现还是源码靠得住些

/**

  • Register a group of workers.
  • @param {String} name
  • @param {String} file, worker file path.
  • @param {Object} options
    • {Array|Number|String} listen, listen port or domain sock, e.g.: 80, [80, 8080] or [80, '/tmp/web.sock'].
    • {Number} [children], worker number, default is os.cpu number.
    • {Number} [max_request], max request number per child worker. Dafault is 0, no limit.
    • {Number} [max_fatal_restart], max fatal to giveup restart. Dafault is 5.
    • {Bool} [trace_gc], trace gc, default is false.
  • @param {Array} [argv] process start argv.
  • @api public
    */

你好,请教你几个问题哈

  1. 那个监听多个端口是什么意思?用来做负载均衡么?
  2. 多机之间的负载均衡如何做,用nginx么?
  3. 如果说要根据url来做反向代理的话,有什么好的方法么?或者说还有没有别的办法?
    非常感谢哈。

windows环境下tcp_wrap报错,Linux环境未测试

报错如下:

image
原因是,在nodejs bindinds里面,tcp_wrap.cc文件的第140行有对实例化时传入的参数进行检验:
image

报错的文件是在 lib/common.js里面,

参考 tcp_wrap.h 里面如下的枚举类型:
image

应该在实例化参数时,传入相应的枚举类型。
image

类比一下,lib/common.js 中的 pipe_wrap 应该也会有同样的问题


2019-10-10 17:02:22
windows系统下,当使用IPC命名管道时,lib/common.js 中第22行:
image
应该为2, 在pipe_wrap.h文件中可以看到
image


lib/child.js中,在windows环境下使用IPC命名管道时,可能会出现handle.setSimultaneousAccepts is not a function的错误,这个错误的报错位置为internal/child_process.js, 可以看出如下发送的句柄出现问题
image

我尝试如下的做法,可以确保错误不会出现,不知道是否可行:
image

以下是我使用的Nodejs环境版本:
image

master api: register

/**
 * 注册一类worker进程
 *
 * @param {String} name
 * @param {String} script file
 * @param {Object} options
 * @param {Array} args
 * @return {Object} workerPair
 */

register(name, file, options, args) {

}

方法和类的命名问题

index.js 中的导致方法命名规范不正确

exports.Master = function (options) {
  return master.create(options);
};

exports.Worker = function (options) {
  return worker.create(options);
};

既然 MasterWorker 是两个方法,那么应该命名 masterworker.

express 2.x app.error 无法注册

因为 express 2.x 中的 app.error 是用于在 app.on('listening',... 的时候才将错误处理加到 app middleware stack 里面确保错误处理在middleware的最后。

请在 readme 里面提醒用户注意此事,在 worker.ready() 前加上

app.emit('listening')

0 down time 更新问题

你好,有个关于产品上线之后后,代码更新的问题请教你!

我们打算使用pm 和 nginx 的upstream来部署程序

使用pm开启两个master 进程,nginx做负载

更新线上代码时,我希望kill掉一个进程后,原来已经连接的请求还能继续处理并返回,
请问在pm下有什么好的办法解决这个问题吗?

谢谢~(●ˇ∀ˇ●)

exception throw out for heartbeat when got sigterm

[master:7555][Fri Aug 03 2012 09:05:44 GMT+0800 (CST)] new worker forked (7562) as "/home/pengchun/work/iservice/app/rest.js"
[master:7555][Fri Aug 03 2012 09:05:45 GMT+0800 (CST)] Got SIGTERM, about to exit...
[master:7555][Fri Aug 03 2012 09:05:45 GMT+0800 (CST)] SIGTERM exited

/home/pengchun/work/iservice/node_modules/pm/lib/master.js:200
pstat[i] = msg.data[i];
^
TypeError: Cannot set property 'status' of undefined
at ChildProcess. (/home/pengchun/work/iservice/node_modules/pm/lib/master.js:200:22)
at ChildProcess.emit (events.js:70:17)
at Pipe.onread (child_process.js:102:16)
[worker:7562][Fri Aug 03 2012 09:05:46 GMT+0800 (CST)] terminated after 2.064 seconds.

执行Worker.reload()时,若某个worker进程还有没处理完的请求,能否等其处理完再退出?

以下代码:

// 文件:master.js
var pm = require('pm');
var master = pm.createMaster();
master.register('test', 'worker.js', {
  listen:  8080,
  children: 2
});
// 文件:worker.js
var http = require('http').createServer(function (req, res) {
  worker.reload();
  res.write('hello world');
  setTimeout(function () {
    res.end('end');
  }, 6000);
});
var worker = require('pm').createWorker().ready(function (socket, port) {
 http.emit('connection', socket);
});

用浏览器发出一个请求之后,worker.js就执行了reload(),但是要在6秒后才会运行res.end()结束该次请求,我希望在执行worker.reload()后,会启动新的worker进程来接收新的请求,但是当前的worker进程要等待处理完所有请求(或者超时后)才退出,上面的代码貌似不能实现这个需求。

worker is killed as soon as forked

[master:15324][Fri Aug 10 2012 19:21:36 GMT+0800 (CST)] new worker forked (28497) as "***/app/rest/index.js"
[master:15324][Fri Aug 10 2012 19:21:36 GMT+0800 (CST)] [28497] maybe already been dead, killing ...

你好,请教关于监听地址的问题

如果传递接口,默认是监听某个端口,如果一台机器有多个IP,想指定监听特定的IP的时候是不是不行?能够有个参数传递监听的IP,一些内部应用不想直接bind(0.0.0.0).

当我control+c 终止master进程的时候,报错

/Users/dongming/dev/github/fdserver/node_modules/pm/lib/child.js:271
      handles[i].close();
                 ^
TypeError: Cannot call method 'close' of null
    at /Users/dongming/dev/github/fdserver/node_modules/pm/lib/child.js:271:18
    at Array.forEach (native)
    at Child.stop (/Users/dongming/dev/github/fdserver/node_modules/pm/lib/child.js:270:26)
    at /Users/dongming/dev/github/fdserver/node_modules/pm/lib/master.js:172:19
    at Array.forEach (native)
    at Master.shutdown (/Users/dongming/dev/github/fdserver/node_modules/pm/lib/master.js:171:27)
    at process.<anonymous> (/Users/dongming/dev/github/fdserver/node_modules/pm/lib/master.js:99:13)
    at process.EventEmitter.emit (events.js:98:17)
    at process.<anonymous> (/Users/dongming/dev/github/fdserver/node_modules/pm/lib/master.js:106:15)
    at process.EventEmitter.emit (events.js:92:17)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.