如何获取一次请求调用占用的内存

2020-04-20 10:27:57 +08:00
 sniperking1234

最近在调研函数计算,也就是 serverless 相关的功能。

发现阿里云和腾讯云中都会显示出这一次调用所占内存,但是没想出来这个内存占用应该怎么计算。

求助 v2 大佬们,有什么方法可以把一次请求的内存消耗计算出来吗。

1671 次点击
所在节点    问与答
12 条回复
imherer
2020-04-20 10:44:39 +08:00
会不会就是取的当前服务器使用内存啊?或者是调用前统计一次内存,请求的时候再统计一次,做一个差值?

瞎猜的...
wysnylc
2020-04-20 10:50:03 +08:00
@imherer #1 阿基米德的浴缸
sniperking1234
2020-04-20 10:51:44 +08:00
@imherer 没有并发的时候可以这么算,但是如果同时有 5 个请求的话,不能除以 5 求平均值吧,所以这个方法就不适用了。
gemini767
2020-04-20 11:54:21 +08:00
同样函数 请求处理 1k 和 1m 的数据 正常返回,看各占内存多少,求出每次请求处理占内存大小的均值
listenerri
2020-04-20 12:03:23 +08:00
LD_PRELOAD 的方式?亦或类似于 Valgrind 的工作原理?但这应该会有性能问题。等大神解惑。
sniperking1234
2020-04-20 12:38:26 +08:00
@gemini767 函数都是用户编写的,在运行之前并不知道要运行什么
@listenerri 我去看下这种方式
gwy15
2020-04-20 12:41:24 +08:00
docker stats 吧……
whileFalse
2020-04-20 13:24:35 +08:00
没明白你的目的是什么?
同时有五个请求的话,每个请求会拉起一个独立的函数。单个函数不会同时 handle 两个请求的。
otakustay
2020-04-20 13:42:36 +08:00
serverless 每次函数调用都是干净的环境跑一次进程的,这个过程中用内存 profile 记录下来就行,实质是进程的内存占用,而不是你的函数的
sniperking1234
2020-04-20 13:50:22 +08:00
@gwy15 同样有多个请求无法处理的情况

@whileFalse 所以怎么看单个函数内存占用呢

@otakustay 我们使用的原型是 knative,如果超过一分钟没有请求,就结束这个 pod,也就是结束进程。但是如果在短时间有多次请求的话,会使用同一个 pod,并不是每次请求都是独立的进程
otakustay
2020-04-20 13:56:16 +08:00
@sniperking1234 我理解短时间内多次复用同一个容器,不是同一个进程吧?内存采样到进程上就行
sniperking1234
2020-04-20 15:55:30 +08:00
@otakustay 是同一个 web 进程。。所以感觉有点难办

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/664165

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX