chaitin / SafeLine

serve as a reverse proxy to protect your web services from attacks and exploits.
https://waf.chaitin.com
GNU General Public License v3.0
13.27k stars 816 forks source link

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

Open saigyouyou opened 2 weeks ago

saigyouyou commented 2 weeks ago

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 commented 1 week ago

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

saigyouyou commented 1 week ago

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

xbingW commented 1 week ago

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

ayellowcat commented 1 week ago

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

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

xbingW commented 1 week ago

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

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

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

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

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

saigyouyou commented 1 week ago

能否在高内存的时候帮忙导出一份 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 commented 2 days ago

能否在高内存的时候帮忙导出一份 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 commented 1 day ago

能否在高内存的时候帮忙导出一份 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 commented 13 hours ago

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

saigyouyou commented 8 hours ago

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

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

xbingW commented 8 hours ago

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