mirror of
https://github.com/fatedier/frp.git
synced 2026-05-15 08:05:49 -06:00
[GH-ISSUE #345] 0.10 启用加密和压缩后,占用内存异常 #250
Labels
No labels
In Progress
WIP
WaitingForInfo
bug
doc
duplicate
easy
enhancement
future
help wanted
invalid
lifecycle/stale
need-issue-template
need-usage-help
no plan
proposal
pull-request
question
todo
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/frp#250
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @laoyur on GitHub (Jun 2, 2017).
Original GitHub issue: https://github.com/fatedier/frp/issues/345
What version of frp are you using (./frpc -v or ./frps -v)?
0.10
What operating system and processor architecture are you using (
go env)?Ubuntu 16.04 x64
Steps to reproduce the issue:
Describe the results you received:
@fatedier commented on GitHub (Jun 2, 2017):
麻烦提供下具体的内存使用情况
/proc/meminfo,如果是 cache 的部分,忽略即可。@laoyur commented on GitHub (Jun 2, 2017):
下面是未启用加密和压缩时frps所在机器的内存情况,机器上几乎只运行frps一个程序,frps已连续工作三小时以上:
以下是启用了加密和压缩时frps所在机器的内存情况,frps是完全重启后运行了10分钟左右。
@fatedier commented on GitHub (Jun 5, 2017):
确认下是否运行的是大量短连接的请求?比如 web 服务?
内存占用过了一段时间之后是否会释放(明显减少)?
@fatedier commented on GitHub (Jun 5, 2017):
推测应该和 #332 是同样的原因引起的,有一些短连接没有正确关闭导致了内存也没有正确释放。
@fatedier commented on GitHub (Jun 5, 2017):
修复了之后编译的版本,可以尝试用这个版本再测试一下
https://pan.baidu.com/s/1eRTu3mU
yfwm
@laoyur commented on GitHub (Jun 6, 2017):
感谢答复,我是用来反代socks server的,的确是大量的短连接,在frps dashboard中显示瞬间connections有时可达数百,并且开启加密和压缩后,connections数量比未开启时要大
一天8小时跑下来(总耗费流量约10G),1G的总内存,未开加密压缩时,frps的内存占用大概是从几十MB平缓增加到450MB左右(已忽略cached);而开启加密和压缩时,frps的内存占用是在短时间内飙升到900MB+,最后全部访问终端断开后,慢慢降到约600MB
现在我每天都要重启一次frps,无论开不开压缩和加密
你的测试版我要明天一早才能测试了,到时候再来反馈。
@fatedier commented on GitHub (Jun 6, 2017):
大概测试了一下,2000并发的情况,内存占用会到300多MB,连接全部断开一段时间后恢复到 20MB左右。
@laoyur commented on GitHub (Jun 7, 2017):
看上去比之前正常多了。图中6月6日的红线是0.10未开加密和压缩,6月7日7点多的红色突发,是上面测试版0.11开启了加密和压缩后开始工作的情况
@fatedier commented on GitHub (Jun 7, 2017):
目前看起来内存占用主要是针对每个连接需要分配一定的缓冲区,所以和你的请求数是相关的,和流量多少没有太大的关系。加密和压缩需要额外的缓冲区。
Go 的内存管理机制是定期释放不用的内存,看起来你的请求量还比较大,能大概计算下 qps 在多少左右?
@laoyur commented on GitHub (Jun 8, 2017):
不太会评估平均请求量,描述一下使用场景,大概是十多个访问终端,全天工作,单终端一次业务大概持续1分钟,产生几十至一百次请求,每个请求持续几秒至十几秒。
再贴一下未开加密和测试0.11开启加密压缩的对比图:

目前看来,对于我的使用场景,压缩的省流量效果不是很明显,我明天再试试加密不压缩吧,或者以后就索性不使用加密压缩了。
@fatedier commented on GitHub (Jun 8, 2017):
👍
@laoyur commented on GitHub (Jun 8, 2017):
感谢答复。
那有没有可能在压缩的时候,有个包体阈值,超过一定大小后再压缩
这个问题我先关了