[eggjs/egg]问题:egg如何只启动一个端口

2025-11-04 895 views
5

我看egg会启动app_worker进程,其绑定在非当前应用的端口下,能否只启动一个端口

回答

0

提供下最小可复现仓库。

4

提供下最小可复现仓库。

不需要啊,就是一个egg的启动示例,任何示例都是这样的

1

@atian25 egg部署的时候,不是要创建app_worker么,这个能否和当前端口一致

7

提供下最小可复现仓库。

不需要啊,就是一个egg的启动示例,任何示例都是这样的

9

app worker 用的就是启动传递的那个

9

那能不能不要启动两个端口,我这边是两个端口呀。。。

9

所以让你提供最小可复现方式啊

2

@atian25 。。。就是这个命令

EGG_SERVER_ENV=test NODE_ENV=test egg-scripts start --port=8080 --env=test --sticky --title=egg-server-drive
0

Hello @Topthinking. Please provide a reproducible example following the instruction.

Issues labeled by Need Reproduce will be closed if no activities in 7 days.

@Topthinking,请根据这个说明提供最小可复现代码。

如果在 7 天内没有进展会被自动关闭。

3

@atian25

6

@atian25 为什么需要最小demo,任何demo,只要执行你们的egg-scripts部署命令就看到了啊,你也可以本地执行看看呀

9

因为我本地复现不了啊,我截图就是我本地执行的。

3

@atian25 你刚刚发的那个命令是dev模式。。。你要使用部署模式,你就执行我刚刚给你发的

EGG_SERVER_ENV=test NODE_ENV=test egg-scripts start --port=8080 --env=test --sticky --title=egg-server-drive
2

--sticky

你加了 sticky,所以会启动一个单独的。

3

噢。那我要websocket,必须要加的吧

4

https://github.com/eggjs/egg-cluster/blob/63c3cd0dcbd5d3ca8d6b6c5bf08c85f4dd698d25/lib/master.js#L218

具体可以看下源码实现,要用 socket 就得这样开端口。

7

@atian25 确实是sticky导致了,但是websocker咋办,能不能固定这个端口,我看是随机的

6

你对外请求用最终的那个即可,其他几个是内部用的。

9

@atian25 再问一下,如果不设置sticky,我把worker设置为1,应该不影响websocket吧

2

@atian25 因为我们这边部署不是docker,服务器的端口资源都是被控制的?

4

如果你这个进程挂了,那在 master 重启 worker 之前用户那边就挂了。

3

@atian25 主要是用pm2部署的,这个不影响,现在问题是,我不设置sticky,为了websocket正常,我把worker设置1可以吧

8

egg 不需要 pm2

你用 pm2,它监控的是 master 进程有没有挂,但实际上是 worker 挂了。

7

@atian25 大佬,我们这边的历史遗留问题,没有用docker,只能使用pm2。。。

2

@atian25 或者说吧,那个多出来的端口能否指定某个端口吧,这样也能解决问题

6

不能,你看下我给你的源码即可,不支持定制。

只能使用pm2。。。

直接 egg-scripts 啊

9

@atian25 嗯,那就只能一个worker跑了,后续还是要切到docker

3

@atian25 能否不启动app_worker啊,这样子在我们的服务器上随便启动端口,这是不允许的啊

8

clusterPort 是多进程间通讯用的。

7

不想用这个进程通讯能不能行,我需要考虑适配我们运维的需求

5

除非你自己写个 egg-cluster

2

@atian25 大哥,我现在只想这个应用部署起来,现在莫名多了个端口,被运维那边的名单拦截了

7

https://github.com/eggjs/egg/blob/master/index.js#L17

你可以考虑用单进程模型,但这个还没正式开放,需要自己在上面启动啥的

7

@atian25 是生效了,但是websockt好像不支持了。。

8

因为它没调用 egg-cluster 了,上面的协议层需要自己处理,要参考那边的代码搞