我司项目是部署在阿里云k8s上,之前express,现在开始用egg写新项目,发现express 启动后内存占用200MB egg500Mb 后来分析发现 egg是多进程启动,这样就有个疑问了,单个pod 分配到的还不到一核,多进程是自己抢自己的资源,内存也是 多出来的开销,想问问 有单进程启动或者其它比较好的方式吗
回复 (9)
X
自己回答自己 目前 workers 设定成了1 内存占用降下来了 由500 降到了200 其余还有待观察
W
如果项目使用了 ts,可以考虑用 midwayjs (koa底层)
J
引用 xilingshidai自己回答自己 目前 workers 设定成了1 内存占用降下来了 由500 降到了200 其余还有待观察
@xilingshidai 你几个CPU?别分配给node应用就一个CPU,搞啥多进程,时间都用来抢占了。如果用egg来做grpc server ,多进程下直接凉凉。
X
k8s 中通过 require("os").cpus().length 获取到的核数是物理机的核数,实际采用的 CFS 调度策略分配到的核数可能会远小于这个数量,后面借鉴 Go 的方案解决了这个问题,有需要可以瞅瞅这个问题记录 Pod 中获取到错误的 CPUS
X
引用 waitingsong如果项目使用了 ts,可以考虑用 midwayjs (koa底层)
@waitingsong 有看过 但目前公司还没上TS,暂时试不了
X
引用 jxycbjhc@xilingshidai 你几个CPU?别分配给node应用就一个CPU,搞啥多进程,时间都用来抢占了。如果用egg来做grpc server ,多进程下直接凉凉。
@jxycbjhc 0.5核吧 不会再多了,所以workers改成了1,1个工作进程 抢占会少一些
X
引用 xiaoxiaojxk8s 中通过 require("os").cpus().length 获取到的核数是物理机的核数,实际采用的 CFS 调度策略分配到的核数可能会远小于这个数量,后面借鉴 Go 的方案解决了这...
@xiaoxiaojx 目前就是设定成了一个工作线程,不需要随核扩展,扩展的话直接动态扩容
H
这个完成后内存占用会进一步降低
X
引用 hyj1991https://github.com/eggjs/egg/issues/4960 这个完成后内存占用会进一步降低
@hyj1991 好嘞,谢谢大佬。我持续关注一下
参与回复
登录后即可参与回复。登录