Node.js只有一名工作人员

时间:2018-10-10 08:35:50

标签: node.js express

这是我的服务器入口点:

Method1

我制作了测试html页面,该页面将20次(或您需要的次数)测试请求发送给某个处理程序。这是它的代码:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Dspring.profiles.active=${profile}","-jar","/app.jar"]`

启动我的服务器并查看控制台:

const numCPUs: number = require('os').cpus().length;
const PORT = process.env.PORT;

import server from './app';
import logger from './logger';

import Domain = require('domain');
import cluster = require('cluster');

if (cluster.isMaster) {
    logger.info(`Master ${process.pid} is running`);

    for (let i = 0; i < numCPUs; i++) {
        cluster.fork();
    }

    cluster.on('exit', (worker, code, signal) => {
        logger.info(`Worker ${worker.process.pid} died`);
        cluster.fork();
    });

  } else {
    const domain = Domain.create();
    domain.on('error', (error) => {
        logger.error(`Domain error in precess id:${ process.pid }`, error);
        ...
    });

    domain.run(() => {
        server.listen(PORT, () => {
            logger.info(`Express server id:${ process.pid } listening on port ${ PORT }`);
        });
    });
}

如您所见,我有一些工作人员,但只有一个处理客户的请求。

如何强制node.js使用所有工作程序?

1 个答案:

答案 0 :(得分:0)

原因是保持活动标题。

试图同时在两个浏览器中开始测试。
我在控制台中看到两个不同的ID!