[GH-ISSUE #345] 0.10 启用加密和压缩后,占用内存异常 #250

Closed
opened 2026-05-05 12:03:11 -06:00 by gitea-mirror · 12 comments
Owner

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:

  • 测试1:3个frpc,全都同时启用加密和压缩,一天内流经frps的总流量大概在几G的量级
  • 测试2:3个frpc,全都同时关闭加密和压缩,一天内流经frps的总流量大概在几G的量级

Describe the results you received:

  • 测试1:短时间内(1小时左右)frps内存占用占满可用内存(900多MB),然后逐渐占满所有swap
  • 测试2:运行了三个小时后,frps只占用100多MB内存,swap几乎未占用,期待更长时间的测试
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:** * 测试1:3个frpc,全都同时**启用**加密和压缩,一天内流经frps的总流量大概在几G的量级 * 测试2:3个frpc,全都同时**关闭**加密和压缩,一天内流经frps的总流量大概在几G的量级 **Describe the results you received:** * 测试1:短时间内(1小时左右)frps内存占用占满可用内存(900多MB),然后逐渐占满所有swap * 测试2:运行了三个小时后,frps只占用100多MB内存,swap几乎未占用,期待更长时间的测试
gitea-mirror 2026-05-05 12:03:11 -06:00
Author
Owner

@fatedier commented on GitHub (Jun 2, 2017):

麻烦提供下具体的内存使用情况 /proc/meminfo ,如果是 cache 的部分,忽略即可。

<!-- gh-comment-id:305684646 --> @fatedier commented on GitHub (Jun 2, 2017): 麻烦提供下具体的内存使用情况 `/proc/meminfo` ,如果是 cache 的部分,忽略即可。
Author
Owner

@laoyur commented on GitHub (Jun 2, 2017):

下面是未启用加密和压缩时frps所在机器的内存情况,机器上几乎只运行frps一个程序,frps已连续工作三小时以上:

# cat /proc/meminfo
MemTotal:        1010676 kB
MemFree:          351856 kB
MemAvailable:     769748 kB
Buffers:           74096 kB
Cached:           311936 kB
SwapCached:         4972 kB
Active:           467248 kB
Inactive:          83100 kB
Active(anon):     155972 kB
Inactive(anon):    13364 kB
Active(file):     311276 kB
Inactive(file):    69736 kB
Unevictable:        3660 kB
Mlocked:            3660 kB
SwapTotal:       4189908 kB
SwapFree:        4160684 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:        165856 kB
Mapped:            27248 kB
Shmem:              2596 kB
Slab:              75224 kB
SReclaimable:      51388 kB
SUnreclaim:        23836 kB
KernelStack:        2800 kB
PageTables:         3080 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     4695244 kB
Committed_AS:     348884 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:     32768 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       67568 kB
DirectMap2M:      980992 kB

以下是启用了加密和压缩时frps所在机器的内存情况,frps是完全重启后运行了10分钟左右。

MemTotal:        1010676 kB
MemFree:           13180 kB
MemAvailable:     245008 kB
Buffers:           51608 kB
Cached:           149868 kB
SwapCached:         9368 kB
Active:           451384 kB
Inactive:         438728 kB
Active(anon):     342272 kB
Inactive(anon):   351124 kB
Active(file):     109112 kB
Inactive(file):    87604 kB
Unevictable:        3660 kB
Mlocked:            3660 kB
SwapTotal:       4189908 kB
SwapFree:        4118784 kB
Dirty:                24 kB
Writeback:             0 kB
AnonPages:        687176 kB
Mapped:            26044 kB
Shmem:              2336 kB
Slab:              73572 kB
SReclaimable:      49620 kB
SUnreclaim:        23952 kB
KernelStack:        2784 kB
PageTables:         4240 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     4695244 kB
Committed_AS:     941944 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:    178176 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       67568 kB
DirectMap2M:      980992 kB
<!-- gh-comment-id:305687013 --> @laoyur commented on GitHub (Jun 2, 2017): 下面是**未启用**加密和压缩时frps所在机器的内存情况,机器上几乎只运行frps一个程序,frps已连续工作三小时以上: ``` # cat /proc/meminfo MemTotal: 1010676 kB MemFree: 351856 kB MemAvailable: 769748 kB Buffers: 74096 kB Cached: 311936 kB SwapCached: 4972 kB Active: 467248 kB Inactive: 83100 kB Active(anon): 155972 kB Inactive(anon): 13364 kB Active(file): 311276 kB Inactive(file): 69736 kB Unevictable: 3660 kB Mlocked: 3660 kB SwapTotal: 4189908 kB SwapFree: 4160684 kB Dirty: 4 kB Writeback: 0 kB AnonPages: 165856 kB Mapped: 27248 kB Shmem: 2596 kB Slab: 75224 kB SReclaimable: 51388 kB SUnreclaim: 23836 kB KernelStack: 2800 kB PageTables: 3080 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 4695244 kB Committed_AS: 348884 kB VmallocTotal: 34359738367 kB VmallocUsed: 0 kB VmallocChunk: 0 kB HardwareCorrupted: 0 kB AnonHugePages: 32768 kB CmaTotal: 0 kB CmaFree: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 67568 kB DirectMap2M: 980992 kB ``` 以下是**启用了**加密和压缩时frps所在机器的内存情况,frps是完全重启后运行了10分钟左右。 ``` MemTotal: 1010676 kB MemFree: 13180 kB MemAvailable: 245008 kB Buffers: 51608 kB Cached: 149868 kB SwapCached: 9368 kB Active: 451384 kB Inactive: 438728 kB Active(anon): 342272 kB Inactive(anon): 351124 kB Active(file): 109112 kB Inactive(file): 87604 kB Unevictable: 3660 kB Mlocked: 3660 kB SwapTotal: 4189908 kB SwapFree: 4118784 kB Dirty: 24 kB Writeback: 0 kB AnonPages: 687176 kB Mapped: 26044 kB Shmem: 2336 kB Slab: 73572 kB SReclaimable: 49620 kB SUnreclaim: 23952 kB KernelStack: 2784 kB PageTables: 4240 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 4695244 kB Committed_AS: 941944 kB VmallocTotal: 34359738367 kB VmallocUsed: 0 kB VmallocChunk: 0 kB HardwareCorrupted: 0 kB AnonHugePages: 178176 kB CmaTotal: 0 kB CmaFree: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 67568 kB DirectMap2M: 980992 kB ```
Author
Owner

@fatedier commented on GitHub (Jun 5, 2017):

确认下是否运行的是大量短连接的请求?比如 web 服务?

内存占用过了一段时间之后是否会释放(明显减少)?

<!-- gh-comment-id:306199772 --> @fatedier commented on GitHub (Jun 5, 2017): 确认下是否运行的是大量短连接的请求?比如 web 服务? 内存占用过了一段时间之后是否会释放(明显减少)?
Author
Owner

@fatedier commented on GitHub (Jun 5, 2017):

推测应该和 #332 是同样的原因引起的,有一些短连接没有正确关闭导致了内存也没有正确释放。

<!-- gh-comment-id:306248299 --> @fatedier commented on GitHub (Jun 5, 2017): 推测应该和 #332 是同样的原因引起的,有一些短连接没有正确关闭导致了内存也没有正确释放。
Author
Owner

@fatedier commented on GitHub (Jun 5, 2017):

修复了之后编译的版本,可以尝试用这个版本再测试一下

https://pan.baidu.com/s/1eRTu3mU
yfwm

<!-- gh-comment-id:306252384 --> @fatedier commented on GitHub (Jun 5, 2017): 修复了之后编译的版本,可以尝试用这个版本再测试一下 https://pan.baidu.com/s/1eRTu3mU yfwm
Author
Owner

@laoyur commented on GitHub (Jun 6, 2017):

感谢答复,我是用来反代socks server的,的确是大量的短连接,在frps dashboard中显示瞬间connections有时可达数百,并且开启加密和压缩后,connections数量比未开启时要大

一天8小时跑下来(总耗费流量约10G),1G的总内存,未开加密压缩时,frps的内存占用大概是从几十MB平缓增加到450MB左右(已忽略cached);而开启加密和压缩时,frps的内存占用是在短时间内飙升到900MB+,最后全部访问终端断开后,慢慢降到约600MB
现在我每天都要重启一次frps,无论开不开压缩和加密

你的测试版我要明天一早才能测试了,到时候再来反馈。

<!-- gh-comment-id:306352014 --> @laoyur commented on GitHub (Jun 6, 2017): 感谢答复,我是用来反代socks server的,的确是大量的短连接,在frps dashboard中显示瞬间connections有时可达数百,并且开启加密和压缩后,connections数量比未开启时要大 一天8小时跑下来(总耗费流量约10G),1G的总内存,未开加密压缩时,frps的内存占用大概是从几十MB平缓增加到450MB左右(已忽略cached);而开启加密和压缩时,frps的内存占用是在短时间内飙升到900MB+,最后全部访问终端断开后,慢慢降到约600MB 现在我每天都要重启一次frps,无论开不开压缩和加密 你的测试版我要明天一早才能测试了,到时候再来反馈。
Author
Owner

@fatedier commented on GitHub (Jun 6, 2017):

大概测试了一下,2000并发的情况,内存占用会到300多MB,连接全部断开一段时间后恢复到 20MB左右。

<!-- gh-comment-id:306364321 --> @fatedier commented on GitHub (Jun 6, 2017): 大概测试了一下,2000并发的情况,内存占用会到300多MB,连接全部断开一段时间后恢复到 20MB左右。
Author
Owner

@laoyur commented on GitHub (Jun 7, 2017):

看上去比之前正常多了。图中6月6日的红线是0.10未开加密和压缩,6月7日7点多的红色突发,是上面测试版0.11开启了加密和压缩后开始工作的情况

<!-- gh-comment-id:306663104 --> @laoyur commented on GitHub (Jun 7, 2017): ![](https://i.imgur.com/HuPkx72.png) 看上去比之前正常多了。图中6月6日的红线是0.10未开加密和压缩,6月7日7点多的红色突发,是上面测试版0.11开启了加密和压缩后开始工作的情况
Author
Owner

@fatedier commented on GitHub (Jun 7, 2017):

目前看起来内存占用主要是针对每个连接需要分配一定的缓冲区,所以和你的请求数是相关的,和流量多少没有太大的关系。加密和压缩需要额外的缓冲区。

Go 的内存管理机制是定期释放不用的内存,看起来你的请求量还比较大,能大概计算下 qps 在多少左右?

<!-- gh-comment-id:306665060 --> @fatedier commented on GitHub (Jun 7, 2017): 目前看起来内存占用主要是针对每个连接需要分配一定的缓冲区,所以和你的请求数是相关的,和流量多少没有太大的关系。加密和压缩需要额外的缓冲区。 Go 的内存管理机制是定期释放不用的内存,看起来你的请求量还比较大,能大概计算下 qps 在多少左右?
Author
Owner

@laoyur commented on GitHub (Jun 8, 2017):

不太会评估平均请求量,描述一下使用场景,大概是十多个访问终端,全天工作,单终端一次业务大概持续1分钟,产生几十至一百次请求,每个请求持续几秒至十几秒。

再贴一下未开加密和测试0.11开启加密压缩的对比图:

目前看来,对于我的使用场景,压缩的省流量效果不是很明显,我明天再试试加密不压缩吧,或者以后就索性不使用加密压缩了。

<!-- gh-comment-id:306965071 --> @laoyur commented on GitHub (Jun 8, 2017): 不太会评估平均请求量,描述一下使用场景,大概是十多个访问终端,全天工作,单终端一次业务大概持续1分钟,产生几十至一百次请求,每个请求持续几秒至十几秒。 再贴一下未开加密和测试0.11开启加密压缩的对比图: ![](https://i.imgur.com/wkYGgVx.png) ![](https://i.imgur.com/uzEGu2F.png) 目前看来,对于我的使用场景,压缩的省流量效果不是很明显,我明天再试试**加密不压缩**吧,或者以后就索性不使用加密压缩了。
Author
Owner

@fatedier commented on GitHub (Jun 8, 2017):

👍

  1. 开启加密后,数据包会变大。这里的加密是指 frpc 和 frps 之间的通信,一般是为了防止被防火墙或者网关过滤。
  2. 压缩针对的是每个包比较大的情况,如果都是小包,可能反而会有负面效果。
<!-- gh-comment-id:306976455 --> @fatedier commented on GitHub (Jun 8, 2017): :+1: 1. 开启加密后,数据包会变大。这里的加密是指 frpc 和 frps 之间的通信,一般是为了防止被防火墙或者网关过滤。 2. 压缩针对的是每个包比较大的情况,如果都是小包,可能反而会有负面效果。
Author
Owner

@laoyur commented on GitHub (Jun 8, 2017):

感谢答复。
那有没有可能在压缩的时候,有个包体阈值,超过一定大小后再压缩
这个问题我先关了

<!-- gh-comment-id:306978663 --> @laoyur commented on GitHub (Jun 8, 2017): 感谢答复。 那有没有可能在压缩的时候,有个包体阈值,超过一定大小后再压缩 这个问题我先关了
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/frp#250
No description provided.