egg icon indicating copy to clipboard operation
egg copied to clipboard

windows server 上开启了两个 worker,但是只有一个 worker 在工作

Open wenjiangs opened this issue 11 months ago • 6 comments

在此输入你需要反馈的 Bug 具体信息(Bug in Detail):

Image

nginx 代理配置

location / {
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_pass http://127.0.0.1:7001;
    }

package.json 启动参数

"start": "egg-scripts start --port=7001 --daemon --title=egg-server --sticky --stdout=logs_start/master-stdout.log --stderr=logs_start/master-stderr.log",

可复现问题的仓库地址(Reproduction Repo)

Node 版本号:

14.19.0

Eggjs 版本号:

2.15.1

相关插件名称与版本号(PlugIn and Name):

"egg": "^2.15.1", "egg-aliyun-sms": "^1.5.2", "egg-cors": "^2.2.3", "egg-memcache": "^1.1.4", "egg-mysql": "^3.0.0", "egg-nodemailer": "^1.0.0", "egg-redis": "^2.6.0", "egg-router-plus": "^1.3.1", "egg-scripts": "^2.11.0",

操作平台与版本号(Platform and Version):

windows server 2003

wenjiangs avatar Feb 17 '25 11:02 wenjiangs

可以将 nodejs 进程都打印出来,看看另外一个是 agent 还是 worker 进程

fengmk2 avatar Feb 17 '25 13:02 fengmk2

可以将 nodejs 进程都打印出来,看看另外一个是 agent 还是 worker 进程

let type = cluster.isWorker ? 'worker' : cluster.isMaster ? 'master' : 'agent' 查看了,都是 worker 进程

wenjiangs avatar Feb 18 '25 02:02 wenjiangs

进程完整名称能打印出来么?egg-scripts 启动有设置进程名的

fengmk2 avatar Feb 18 '25 03:02 fengmk2

进程名指的是 process.title 吗?我打印出来看都是一样,我打印了 worker 和 agent 的启动参数:

-------------
进程: 2952 
 启动参数: [
  'D:\\nodejs\\node.exe',
  'D:\\test\\eggRestful\\node_modules\\egg-cluster\\lib\\app_worker.js',
  '{"framework":"D:\\\\test\\\\eggRestful\\\\node_modules\\\\egg","baseDir":"D:\\\\test\\\\eggRestful","port":7002,"workers":2,"plugins":null,"https":false,"title":"egg-server-wenjiangs","sticky":true,"clusterPort":30164,"stickyWorkerPort":30165}'
]
-------------
进程: 14736 
 启动参数: [
  'D:\\nodejs\\node.exe',
  'D:\\test\\eggRestful\\node_modules\\egg-cluster\\lib\\agent_worker.js',
  '{"framework":"D:\\\\test\\\\eggRestful\\\\node_modules\\\\egg","baseDir":"D:\\\\test\\\\eggRestful","port":7002,"workers":2,"plugins":null,"https":false,"title":"egg-server-wenjiangs","sticky":true,"clusterPort":30164,"stickyWorkerPort":30165}'
]
-------------
进程: 19296 
 启动参数: [
  'D:\\nodejs\\node.exe',
  'D:\\test\\eggRestful\\node_modules\\egg-cluster\\lib\\app_worker.js',
  '{"framework":"D:\\\\test\\\\eggRestful\\\\node_modules\\\\egg","baseDir":"D:\\\\test\\\\eggRestful","port":7002,"workers":2,"plugins":null,"https":false,"title":"egg-server-wenjiangs","sticky":true,"clusterPort":30164,"stickyWorkerPort":30165}'
]
-------------
进程: 14736 
 启动参数: [
  'D:\\nodejs\\node.exe',
  'D:\\test\\eggRestful\\node_modules\\egg-cluster\\lib\\agent_worker.js',
  '{"framework":"D:\\\\test\\\\eggRestful\\\\node_modules\\\\egg","baseDir":"D:\\\\test\\\\eggRestful","port":7002,"workers":2,"plugins":null,"https":false,"title":"egg-server-wenjiangs","sticky":true,"clusterPort":30164,"stickyWorkerPort":30165}'
]

Image

wenjiangs avatar Feb 18 '25 09:02 wenjiangs

经过测试,添加 --sticky 启动参数后,就会出现这种情况!

wenjiangs avatar Feb 21 '25 08:02 wenjiangs

对,这是 websocket 才需要的,如果你没有 websocket 服务,不要添加这个参数

fengmk2 avatar Feb 21 '25 10:02 fengmk2