[GH-ISSUE #896] Window 2012 R2 x64 下Frps内存泄漏 #708

Closed
opened 2026-05-05 12:27:19 -06:00 by gitea-mirror · 2 comments
Owner

Originally created by @AdvanceForever on GitHub (Aug 20, 2018).
Original GitHub issue: https://github.com/fatedier/frp/issues/896

------------------Window 2012 R2 x64 下Frps内存泄漏------------------

版本信息:
Frps 版本: V 0.17.0
Frpc 版本: V 0.17.0

Frps配置:

[common]
bind_port = xx100
vhost_http_port = xxx80
subdomain_host = tunnel.xxx.com
dashboard_port = xxxxx
dashboard_user = admin
dashboard_passwd = admin
log_level = warn

Frpc 配置:

[common]
server_addr = xxx.xx.xx.xxx
server_port = 65100
[web_gongban230bf]
type = http
local_port = 80
subdomain = gongban230bf

环境说明:

  1. 操作系统环境: Window 2012 R2 x64, 4GB内存, 500GB硬盘, CPU E5-2650 V2 @2.6Ghz
  2. 客户端总量108个
  3. 传输模式: TCP 链接 HTTP协议
  4. 转发模式: web模式中的HTTP协议

导致问题初步判断:

  1. 客户端网络不稳定重复重连时候, 会导致内存占用很快增长, 这种情况最明显, 12小时就到了1GB. 2个终端3秒钟重连一下.
  2. "Accept new mux stream error: broken pipe" 和 "read error: broken pipe" 这个情况下内存增长情况慢些, 但是在24小时后内存还是占用到了1GB以上.
    说明:
    为了找到"no such domain Tunnel"是具体哪一个客户端没连上所以在[fatedier/frp/utils/vhost/reverseproxy.go] 的 253行和275行log输出改为了 :
    p.logf("http: proxy error: %v Tunnel客户端[%s]未连接", err,req.Host)
    其中的 req.Host 直接输出了在请求客户端时候的 gongban230bf.tunnel.xxx.com:端口号 信息. 整个项目中只调整这里其他的没有改动过, 使用官方下载的0.17.0的版本也是一样的情况.

Frps 警告提示信息:

2018/08/20 17:12:32 [W] [control.go:242] [735e12315798ba8f] read error: broken pipe
2018/08/20 17:12:32 [W] [service.go:247] Accept new mux stream error: broken pipe
2018/08/20 17:12:32 [W] [control.go:242] [6941d2ac993ea54b] read error: broken pipe
2018/08/20 17:12:32 [W] [service.go:247] Accept new mux stream error: broken pipe
2018/08/20 17:12:36 [W] [control.go:242] [974a1f54476ee99b] read error: broken pipe
2018/08/20 17:12:36 [W] [service.go:247] Accept new mux stream error: broken pipe
2018/08/20 17:12:38 [W] [control.go:242] [4bb6fa91dd49c6f0] read error: broken pipe
2018/08/20 17:12:38 [W] [service.go:247] Accept new mux stream error: broken pipe
2018/08/20 17:12:54 [W] [control.go:242] [dbee2441ec29d6f7] read error: broken pipe
2018/08/20 17:12:54 [W] [service.go:247] Accept new mux stream error: broken pipe
2018/08/20 17:12:54 [W] [control.go:242] [aca50b9e1dfb6d8c] read error: broken pipe
2018/08/20 17:12:54 [W] [service.go:247] Accept new mux stream error: broken pipe
2018/08/20 17:12:56 [W] [control.go:242] [01168653e450b7f2] read error: broken pipe
2018/08/20 17:12:56 [W] [service.go:247] Accept new mux stream error: broken pipe
2018/08/20 17:13:00 [W] [control.go:242] [dc345a22c9153d82] read error: broken pipe
2018/08/20 17:13:00 [W] [service.go:247] Accept new mux stream error: broken pipe

2018/08/20 17:13:55 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 这个是没找到客户端
2018/08/20 17:13:55 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
2018/08/20 17:13:55 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel
Originally created by @AdvanceForever on GitHub (Aug 20, 2018). Original GitHub issue: https://github.com/fatedier/frp/issues/896 **------------------Window 2012 R2 x64 下Frps内存泄漏------------------** **版本信息:** Frps 版本: V 0.17.0 Frpc 版本: V 0.17.0 Frps配置: ``` [common] bind_port = xx100 vhost_http_port = xxx80 subdomain_host = tunnel.xxx.com dashboard_port = xxxxx dashboard_user = admin dashboard_passwd = admin log_level = warn ``` Frpc 配置: ``` [common] server_addr = xxx.xx.xx.xxx server_port = 65100 [web_gongban230bf] type = http local_port = 80 subdomain = gongban230bf ``` **环境说明:** 1. 操作系统环境: Window 2012 R2 x64, 4GB内存, 500GB硬盘, CPU E5-2650 V2 @2.6Ghz 2. 客户端总量108个 3. 传输模式: TCP 链接 HTTP协议 4. 转发模式: web模式中的HTTP协议 **导致问题初步判断:** 1. 客户端网络不稳定重复重连时候, 会导致内存占用很快增长, 这种情况最明显, 12小时就到了1GB. 2个终端3秒钟重连一下. 2. "Accept new mux stream error: broken pipe" 和 "read error: broken pipe" 这个情况下内存增长情况慢些, 但是在24小时后内存还是占用到了1GB以上. 说明: 为了找到"no such domain Tunnel"是具体哪一个客户端没连上所以在[fatedier/frp/utils/vhost/reverseproxy.go] 的 253行和275行log输出改为了 : `p.logf("http: proxy error: %v Tunnel客户端[%s]未连接", err,req.Host)` 其中的 req.Host 直接输出了在请求客户端时候的 _gongban230bf.tunnel.xxx.com:端口号_ 信息. 整个项目中只调整这里其他的没有改动过, 使用官方下载的0.17.0的版本也是一样的情况. **Frps 警告提示信息:** ``` 2018/08/20 17:12:32 [W] [control.go:242] [735e12315798ba8f] read error: broken pipe 2018/08/20 17:12:32 [W] [service.go:247] Accept new mux stream error: broken pipe 2018/08/20 17:12:32 [W] [control.go:242] [6941d2ac993ea54b] read error: broken pipe 2018/08/20 17:12:32 [W] [service.go:247] Accept new mux stream error: broken pipe 2018/08/20 17:12:36 [W] [control.go:242] [974a1f54476ee99b] read error: broken pipe 2018/08/20 17:12:36 [W] [service.go:247] Accept new mux stream error: broken pipe 2018/08/20 17:12:38 [W] [control.go:242] [4bb6fa91dd49c6f0] read error: broken pipe 2018/08/20 17:12:38 [W] [service.go:247] Accept new mux stream error: broken pipe 2018/08/20 17:12:54 [W] [control.go:242] [dbee2441ec29d6f7] read error: broken pipe 2018/08/20 17:12:54 [W] [service.go:247] Accept new mux stream error: broken pipe 2018/08/20 17:12:54 [W] [control.go:242] [aca50b9e1dfb6d8c] read error: broken pipe 2018/08/20 17:12:54 [W] [service.go:247] Accept new mux stream error: broken pipe 2018/08/20 17:12:56 [W] [control.go:242] [01168653e450b7f2] read error: broken pipe 2018/08/20 17:12:56 [W] [service.go:247] Accept new mux stream error: broken pipe 2018/08/20 17:13:00 [W] [control.go:242] [dc345a22c9153d82] read error: broken pipe 2018/08/20 17:13:00 [W] [service.go:247] Accept new mux stream error: broken pipe 2018/08/20 17:13:55 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 这个是没找到客户端 2018/08/20 17:13:55 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 2018/08/20 17:13:55 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel 2018/08/20 17:13:56 [W] [newhttp.go:189] http: proxy error: no such domain Tunnel ```
Author
Owner

@kinneyli commented on GitHub (Aug 21, 2018):

建议测试看看最新版 0.21 还有没有这个问题。

<!-- gh-comment-id:414541161 --> @kinneyli commented on GitHub (Aug 21, 2018): 建议测试看看最新版 0.21 还有没有这个问题。
Author
Owner

@Bunnyk001 commented on GitHub (Aug 28, 2018):

还是测试一下最新版本吧

<!-- gh-comment-id:416507270 --> @Bunnyk001 commented on GitHub (Aug 28, 2018): 还是测试一下最新版本吧
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#708
No description provided.