唯一标识node.js中的进程

时间:2013-02-13 04:46:47

标签: node.js unix

node.js中可用的值为node.js中每个服务器上的每个进程创建一个唯一的ID?现在,我只知道如何获取进程ID。

2 个答案:

答案 0 :(得分:4)

不确定您的要求是什么,但您可以执行哈希(主机名+ pid +时间戳):

const crypto = require('crypto');
const os = require('os');

const parts = [os.hostname(), process.pid, +(new Date)];
const hash = crypto.createHash('md5').update(parts.join(''));

hash.digest('hex'); // "56f0dec9b403c5aa19827326555d6a5b"

答案 1 :(得分:3)

node.js是一个单线程服务器。它只使用一个CPU核心(生成的进程可以使用其他核心),process.pid足以识别系统上的节点进程。如果您运行多个node.js服务器,则每个服务器将具有不同的process.pid。

如果希望单节点服务器利用多核CPU,则必须在群集中运行node.js.使用clusterhttp://nodejs.org/api/cluster.html

它将主线程分配到许多工作线程中,这些线程使用IPC(进程间通信)相互通信。每个工作人员都使用CPU核心。要获得每个工作人员的ID,您可以使用worker.id http://nodejs.org/api/cluster.html#cluster_worker_id

修改:从评论添加

答案取决于可能值的大小/范围。在LAN主机名上,IP和pid可能就足够了。此外,每台服务器都可以拥有多个可以侦听的NIC和IP。请使用app.address() { address: '192.1.168.5', family: 'IPv4', port: 3000 }

进行检查