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