关注a common convention,我通常会在项目server.js
中命名主文件。但是,这会导致这样的情况:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21049 root 20 0 2347568 1.133g 0 D 0.0 14.5 0:32.70 node ./server.js
28201 root 20 0 1261740 69332 8 S 0.0 0.8 4:04.46 node src/server.js
26652 root 20 0 776664 9324 8 S 0.0 0.1 0:00.09 node server.js
其中一项服务存在严重的内存问题 - 但我该如何弄清楚它是什么?
想到一些可能的解决方案:
server-label-gen.js
,server-order-mgt.js
等。问题:除了不完全遵循命名约定之外,我最终还想标准化像Dockerfiles这样的东西,但如果这些文件的名称都不同,我需要模板而不是只能复制。node ./server.js --name=label-gen
。这与模板有同样的问题,加上对这个参数的作用有什么困惑(如果我通过--name=order-mgt
而不是突然变成订单服务器?)process.title
更改为更有用的内容。这是一种常见的方法(例如,postgres会这样做)但是要做对了似乎很棘手。是否有针对此类事情的最佳做法?这似乎是微服务的常见问题,但我找不到其他人如何解决它的问题。
答案 0 :(得分:1)
您可以简单process.title = process.env.PROCESS_TITLE
,或使用依赖于package.json
中名称的process-title之类的内容。
我认为这是人们可以想到的最简单的方法。
使用Docker,我不会在主机(ps
)中查看单个进程,而是使用抽象docker为您提供(docker ps
),如果您确实需要的话。
(一般来说,微服务会将事情提升一级,这样你就不必太担心低级别的戏剧,像k8s或者openhift这样的协调者负责过程监控等等)