Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] 7.1.0 内存占用过高 #1097

Open
saigyouyou opened this issue Nov 13, 2024 · 16 comments
Open

[Bug] 7.1.0 内存占用过高 #1097

saigyouyou opened this issue Nov 13, 2024 · 16 comments

Comments

@saigyouyou
Copy link

What happened?

使用的是阿里云,社区版雷池,2核8G内存的服务器,占用了接近一半的内存。fvm和snserver占了2G和1.7G的内存,是否有点太多了。
这两个是safeline的进程吧?

ps -eo pid,ppid,cmd,%mem --sort=-%mem | head
PID PPID CMD %MEM
1486 1426 ./fvm /app/config.yml 26.0
2948 1889 snserver 21.9
25878 1 /usr/bin/redis-server 127.0 13.0
3026 2995 /app/luigi 3.0

How we reproduce?

  1. ...
  2. ...
  3. ...

Expected behavior

请问要怎么查是什么原因导致的?是否有选项可以限制内存分配?

Error log

top按照内存排列如下:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1486 root 20 0 3860424 1.996g 18484 S 0.0 26.1 390:47.13 fvm
2948 root 20 0 2170852 1.685g 13516 S 0.7 22.0 101:27.52 snserver
25878 redis 20 0 1095932 1.000g 2700 S 0.0 13.1 0:43.76 redis-server
653 root 20 0 0.491t 276856 256000 S 0.0 3.4 12:11.40 meilisearch
3026 root 20 0 2412192 250260 6716 S 0.3 3.1 67:37.48 luigi
2264 999 20 0 239504 144708 142560 S 0.0 1.8 2:52.17 postgres
2265 999 20 0 239264 142836 140944 S 0.3 1.8 0:40.82 postgres
1710 203 20 0 225840 85252 3828 S 0.7 1.1 101:39.87 nginx
1711 203 20 0 225840 84764 3880 S 0.7 1.1 102:07.94 nginx
27450 root 20 0 1265032 47708 36 S 0.0 0.6 0:00.75 mgt
880 root 20 0 1999744 47448 9788 S 0.0 0.6 123:30.62 dockerd

@ayellowcat
Copy link

我也发现了,也是8G的内存,7.1.1-lts 版本,内存会持续升高,直到占满
Snipaste_2024-11-18_10-48-40

@saigyouyou
Copy link
Author

saigyouyou commented Nov 19, 2024

从13号重启之后依然是这样
WeChat36007437106e2195b44de45d1f726763

@xbingW
Copy link
Collaborator

xbingW commented Nov 21, 2024

是 fvm 的内存在持续升高吗,还是其他进程?

@ayellowcat
Copy link

是 fvm 的内存在持续升高吗,还是其他进程?

safeline-luigi 这个容器,跟4.X那时一样,内存占用持续升高,在6.X版本的时候,好像还会定期回收,到了7.1,都不回收了,就一直涨上去,等着报警了,就去手动重启这个容器才会降下来

@xbingW
Copy link
Collaborator

xbingW commented Nov 21, 2024

能否在高内存的时候帮忙导出一份 heap

curl -s $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' safeline-luigi)/debug/pprof/heap -o heap 

@ayellowcat
Copy link

能否在高内存的时候帮忙导出一份 heap

curl -s $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' safeline-luigi)/debug/pprof/heap -o heap 

好的,按前几次的规律,大概在25日会占用到75%,那时候发你

@saigyouyou
Copy link
Author

saigyouyou commented Nov 21, 2024

能否在高内存的时候帮忙导出一份 heap

curl -s $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' safeline-luigi)/debug/pprof/heap -o heap 

我的版本是7.1.0,占用多的是fvm和snserver

ok,等过几天涨上去导一份。昨晚内存跑到80了,我重启了服务。

@ayellowcat
Copy link

能否在高内存的时候帮忙导出一份 heap

curl -s $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' safeline-luigi)/debug/pprof/heap -o heap 

从11.20日重启luigi,到刚才,服务器内存占用超过了80%,这是导出的heap文件,和占用情况
heap.zip
Snipaste_2024-11-26_23-02-22
Snipaste_2024-11-26_23-03-35

@saigyouyou
Copy link
Author

能否在高内存的时候帮忙导出一份 heap

curl -s $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' safeline-luigi)/debug/pprof/heap -o heap 

heap.zip
内存占用到77%了
safeline版本7.1.0,附件是luigi和fvm的heap,主要是fvm占用高。
image

@xbingW
Copy link
Collaborator

xbingW commented Nov 28, 2024

lugi 升级到 7.2.4 可以解决, fvm 还在排查中

@saigyouyou
Copy link
Author

lugi 升级到 7.2.4 可以解决, fvm 还在排查中

snserver的占用率也很高,不过我不知道怎么导出heap,导出safeline-detector会报错

@xbingW
Copy link
Collaborator

xbingW commented Nov 28, 2024

snserver 和请求挂钩,snserver 多少 m,每天的访问量和 qps 是多少呢

@saigyouyou
Copy link
Author

saigyouyou commented Nov 29, 2024

snserver 和请求挂钩,snserver 多少 m,每天的访问量和 qps 是多少呢

前一次重启的时候snserver内存占用1.685G
waf监控页显示每天访问量大约3m,qps现在是10左右

@xbingW
Copy link
Collaborator

xbingW commented Nov 29, 2024

snserver 持续上涨没有上限吗

@saigyouyou
Copy link
Author

snserver 持续上涨没有上限吗

不知道有没有,基本上snserver的内存占用大小相当于fvm的80%吧。例如fvm占用1.996GB的时候,snserver占用1.685GB。
两个加起来占用3GB多快4GB的时候 (服务器8GB内存) 的时候我就重启docker了。
snserver内存量的上限是有参数可以配置的么?曲线看上去没有遇到上限的感觉。图上面两个拐点是重启的时间。

WeChatfe71392d586645cb0bfb84f29e23fc48

@xbingW
Copy link
Collaborator

xbingW commented Dec 9, 2024

暂时可以使用 docker compose 的资源限制来限制 fvm 的内存使用

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants