X-Profiler / xprofiler

🌀An addon for node.js, which supporting output performance log and real-time profiling through sampling.
Other
426 stars 57 forks source link

内存信息不符合预期 #190

Closed ChenAlmost closed 2 years ago

ChenAlmost commented 2 years ago

感谢作者的repo,非常的好用,目前公司里的node项目都接入了。

最近遇到了一个问题,之前项目部署在了物理机上,内存信息是符合预期的。把项目迁移到了docker,用k8s管理发现内存信息不符合预期。具体情况如下: xprofiler: 1.4.0。 xtransit: 1.2.0。 (配置也增加了 docker: true) node monitor 上显示内存用了3个G差不多。但是grafana 上看只用了2个G。我登录到机器上,通过 px aux 命令查看进程内存占用信息,grafana 上是符合预期的。 image image image

hyj1991 commented 2 years ago

系统内存其实依赖 docker 的自动判断,你可以尝试下给 xtransit 的配置强制指定 docker: true 试下看看

hyj1991 commented 2 years ago

另外,你也可以看下

这里是自动判断当前部署 xtransit 的环境是否为容器,实际上容器的场景比较复杂,自动判断没办法覆盖所有的 case,你可以看看你的容器里这段逻辑为啥没办法自动判断是容器环境

hyj1991 commented 2 years ago

容器环境下的 free memory 计算逻辑在这里:https://github.com/X-Profiler/xtransit/blob/master/orders/system_log.js#L309-L329

这个和云的监控计算逻辑是一致的,具体可以参见这个 PR:https://github.com/X-Profiler/xtransit/pull/26

ChenAlmost commented 2 years ago

容器环境下的 free memory 计算逻辑在这里:https://github.com/X-Profiler/xtransit/blob/master/orders/system_log.js#L309-L329

这个和云的监控计算逻辑是一致的,具体可以参见这个 PR:X-Profiler/xtransit#26

感谢回复。这个计算逻辑看起来是 xtransit 2.1.0 版本支持的。我先尝试把版本升级一下再来反馈。

hyj1991 commented 2 years ago

感谢回复。这个计算逻辑看起来是 xtransit 2.1.0 版本支持的。我先尝试把版本升级一下再来反馈。

没有,很早就支持了,这个 PR 是一年前的

hyj1991 commented 2 years ago

我反而觉得 graphana 的计算不准,而且直接用 ps aux 是不对的,不同的 kernel 版本对 bufferd 的计算不一样

ChenAlmost commented 2 years ago

感谢回复。这个计算逻辑看起来是 xtransit 2.1.0 版本支持的。我先尝试把版本升级一下再来反馈。

没有,很早就支持了,这个 PR 是一年前的

我用的 xtransit@1.2.0 版本。我刚才看了一下是2020年的版本。这个版本没有这个PR。😭(之前项目node的版本是8.x,所以选择了这个版本)

ChenAlmost commented 2 years ago

升级到了 xtransit@2.1.0,问题解决了,感谢! @hyj1991