mirror of
https://github.com/fatedier/frp.git
synced 2026-05-15 08:05:49 -06:00
[GH-ISSUE #3243] all quic traffic from frpc to frps stalls #2603
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#2603
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 @delaneyb on GitHub (Jan 7, 2023).
Original GitHub issue: https://github.com/fatedier/frp/issues/3243
Bug Description
The new quic support is great! For static file downloads I was able to increase throughput from 4MB/s to around 13MB/s simply by switching to the new
protocol = quic. Unfortunately my excitement was short lived as the tunnel would stop working entirely when I started trying to seek around a video served through the frp tunnel from my Jellyfin media server. Restarting the tunnel would always fix the problem until you seek on the video again a few times. A minimal repro can be made by simply opening a tunnel to a local http server which is serves a video file and dragging the playhead in the browser to generate a bunch of requests:https://user-images.githubusercontent.com/18545667/211148931-63a3056d-a2d7-43bb-b86c-1446f396971f.mp4
It seems to vary how many times you can seek around the video, some times only once would cause the tunnel to break, others maybe 10 or more times. I have found dragging the playhead around the video will guarantee to trigger the issue.
I have spent a couple days now wrapping my head around the codebase and learning go to try and understand where the issue was occurring. Today I found a hacky solution that solves the video seeking issue at least temporarily.
With this change in place the quic connection no longer breaks down BUT both frpc and frps memory usage continues increasing as I drag the playhead around the video (after doing so for about 30s I observed ~50MB memory usage on windows), I would assume indicating that there are a bunch of quic streams that are not being closed or something.
frpc Version
1.46.0
frps Version
1.46.0
System Architecture
Observed on linux/amd64, windows/x86_64, linux_arm64, darwin
Configurations
frpc.ini
frps.ini
Logs
frpc.log
frps.log
Steps to reproduce
Affected area
@fatedier commented on GitHub (Jan 9, 2023):
@delaneyb Thanks for your feedback and your detail infos. It helps me a lot.
I find that the bug maybe caused by
Close()of quic stream. Releated issue https://github.com/lucas-clemente/quic-go/issues/3558We need to call
CancelRead()too. I will fix it soon.