最近在调研函数计算,也就是 serverless 相关的功能。
发现阿里云和腾讯云中都会显示出这一次调用所占内存,但是没想出来这个内存占用应该怎么计算。
求助 v2 大佬们,有什么方法可以把一次请求的内存消耗计算出来吗。
1
imherer 2020-04-20 10:44:39 +08:00
会不会就是取的当前服务器使用内存啊?或者是调用前统计一次内存,请求的时候再统计一次,做一个差值?
瞎猜的... |
3
sniperking1234 OP @imherer 没有并发的时候可以这么算,但是如果同时有 5 个请求的话,不能除以 5 求平均值吧,所以这个方法就不适用了。
|
4
gemini767 2020-04-20 11:54:21 +08:00
同样函数 请求处理 1k 和 1m 的数据 正常返回,看各占内存多少,求出每次请求处理占内存大小的均值
|
5
listenerri 2020-04-20 12:03:23 +08:00
LD_PRELOAD 的方式?亦或类似于 Valgrind 的工作原理?但这应该会有性能问题。等大神解惑。
|
6
sniperking1234 OP |
7
gwy15 2020-04-20 12:41:24 +08:00
docker stats 吧……
|
8
whileFalse 2020-04-20 13:24:35 +08:00
没明白你的目的是什么?
同时有五个请求的话,每个请求会拉起一个独立的函数。单个函数不会同时 handle 两个请求的。 |
9
otakustay 2020-04-20 13:42:36 +08:00
serverless 每次函数调用都是干净的环境跑一次进程的,这个过程中用内存 profile 记录下来就行,实质是进程的内存占用,而不是你的函数的
|
10
sniperking1234 OP @gwy15 同样有多个请求无法处理的情况
@whileFalse 所以怎么看单个函数内存占用呢 @otakustay 我们使用的原型是 knative,如果超过一分钟没有请求,就结束这个 pod,也就是结束进程。但是如果在短时间有多次请求的话,会使用同一个 pod,并不是每次请求都是独立的进程 |
11
otakustay 2020-04-20 13:56:16 +08:00
@sniperking1234 我理解短时间内多次复用同一个容器,不是同一个进程吧?内存采样到进程上就行
|
12
sniperking1234 OP @otakustay 是同一个 web 进程。。所以感觉有点难办
|