[GH-ISSUE #1372] 给总断线的朋友们一点小建议。 #1088

Closed
opened 2026-05-05 12:41:53 -06:00 by gitea-mirror · 22 comments
Owner

Originally created by @mtelvin on GitHub (Aug 10, 2019).
Original GitHub issue: https://github.com/fatedier/frp/issues/1372

我第一次接触frp是0.25.0版的,按照网上的教程写好后就用着,期间断断续续的发现有中断的情况,后来升级了0.27.0中断的现象更频繁,等到了0.28.0更新后仍然断线,实在忍无可忍的情况下,我查了下错误原因,发现有可能是因为系统日志出了错,warning: journal has been rotated since unit was started. log output is incomplete or unavailable.错误的提示就是这样的,于是在网上搜索了下,找到了点思路,觉得应该是服务加载顺序出了问题,于是我就把我frp.services中的After=network.target后面添加了local-fs.target,这样frp服务的加载顺序就比系统日志服务加载的晚,准确的写法是 After=network.target local-fs.target,改完之后,目前没有再中断,我会继续跟进状态,给有同样问题的朋友提供一个解决思路。

Originally created by @mtelvin on GitHub (Aug 10, 2019). Original GitHub issue: https://github.com/fatedier/frp/issues/1372 我第一次接触frp是0.25.0版的,按照网上的教程写好后就用着,期间断断续续的发现有中断的情况,后来升级了0.27.0中断的现象更频繁,等到了0.28.0更新后仍然断线,实在忍无可忍的情况下,我查了下错误原因,发现有可能是因为系统日志出了错,warning: journal has been rotated since unit was started. log output is incomplete or unavailable.错误的提示就是这样的,于是在网上搜索了下,找到了点思路,觉得应该是服务加载顺序出了问题,于是我就把我frp.services中的After=network.target后面添加了local-fs.target,这样frp服务的加载顺序就比系统日志服务加载的晚,准确的写法是 After=network.target local-fs.target,改完之后,目前没有再中断,我会继续跟进状态,给有同样问题的朋友提供一个解决思路。
Author
Owner

@catwhite001 commented on GitHub (Aug 10, 2019):

阿里云上, 只用了http。

0.27.1的frps应该是有内存泄漏, 我frps跑了7天后, 明明没有任何连接存在, 但是阿里云的监控显示
连接数有8w多个ESTABLISHED. 然后我netstat -an | grep 8080 | grep EST 确实有8万个连接。

0.28.1 应该也是有bug, 我把0.27.1切换到0.28.1后, 用了不到一天, 服务器就访问不了。
然后我重启了下, 第二天又不行了。 所以我还是切换回了0.27.1

<!-- gh-comment-id:520121607 --> @catwhite001 commented on GitHub (Aug 10, 2019): 阿里云上, 只用了http。 0.27.1的frps应该是有内存泄漏, 我frps跑了7天后, 明明没有任何连接存在, 但是阿里云的监控显示 连接数有8w多个ESTABLISHED. 然后我netstat -an | grep 8080 | grep EST 确实有8万个连接。 0.28.1 应该也是有bug, 我把0.27.1切换到0.28.1后, 用了不到一天, 服务器就访问不了。 然后我重启了下, 第二天又不行了。 所以我还是切换回了0.27.1
Author
Owner

@Hurricanezwf commented on GitHub (Aug 11, 2019):

阿里云上, 只用了http。

0.27.1的frps应该是有内存泄漏, 我frps跑了7天后, 明明没有任何连接存在, 但是阿里云的监控显示
连接数有8w多个ESTABLISHED. 然后我netstat -an | grep 8080 | grep EST 确实有8万个连接。

0.28.1 应该也是有bug, 我把0.27.1切换到0.28.1后, 用了不到一天, 服务器就访问不了。
然后我重启了下, 第二天又不行了。 所以我还是切换回了0.27.1

frps的端口是对公网暴露的,被人给扫描了吧?

<!-- gh-comment-id:520226796 --> @Hurricanezwf commented on GitHub (Aug 11, 2019): > 阿里云上, 只用了http。 > > 0.27.1的frps应该是有内存泄漏, 我frps跑了7天后, 明明没有任何连接存在, 但是阿里云的监控显示 > 连接数有8w多个ESTABLISHED. 然后我netstat -an | grep 8080 | grep EST 确实有8万个连接。 > > 0.28.1 应该也是有bug, 我把0.27.1切换到0.28.1后, 用了不到一天, 服务器就访问不了。 > 然后我重启了下, 第二天又不行了。 所以我还是切换回了0.27.1 frps的端口是对公网暴露的,被人给扫描了吧?
Author
Owner

@mtelvin commented on GitHub (Aug 14, 2019):

看来问题还是没有真正得到解决,还是出现日志翻转的情况,我继续跟进研究一下,目前欠缺的是解决思路。

<!-- gh-comment-id:521078318 --> @mtelvin commented on GitHub (Aug 14, 2019): 看来问题还是没有真正得到解决,还是出现日志翻转的情况,我继续跟进研究一下,目前欠缺的是解决思路。
Author
Owner

@mtelvin commented on GitHub (Aug 16, 2019):

真高兴,昨天把日志的类型改为了记录错误,仔细研究了下,发现真正造成频繁掉线的问题应该是由于端口复用造成的,其实也是昨天通过错误记录在网上搜索到的一条思路,造成频繁断线很有可能是因为防火墙没有开启端口复用,简单的来说就是在开放端口的时候只是开放了单一的端口,而frp服务又开启了端口复用,这就造成了冲突,客户端向服务器发送复用请求,而服务器只开放了单一端口,就会产生端口占用错误,客户端不停地请求最后直到把frp服务器弄崩溃,按照新的思路我将所有的iptables条目添加了-m参数,简单来说就是iptables -A INPUT -p tcp -m tcp --dport 7000 -j ACCEPT ,目前已经正常9个小时不间断了,我继续跟进,虽然不能从代码层面给大家什么帮助,但是我尽量多提供解决思路。

<!-- gh-comment-id:521983069 --> @mtelvin commented on GitHub (Aug 16, 2019): 真高兴,昨天把日志的类型改为了记录错误,仔细研究了下,发现真正造成频繁掉线的问题应该是由于端口复用造成的,其实也是昨天通过错误记录在网上搜索到的一条思路,造成频繁断线很有可能是因为防火墙没有开启端口复用,简单的来说就是在开放端口的时候只是开放了单一的端口,而frp服务又开启了端口复用,这就造成了冲突,客户端向服务器发送复用请求,而服务器只开放了单一端口,就会产生端口占用错误,客户端不停地请求最后直到把frp服务器弄崩溃,按照新的思路我将所有的iptables条目添加了-m参数,简单来说就是iptables -A INPUT -p tcp -m tcp --dport 7000 -j ACCEPT ,目前已经正常9个小时不间断了,我继续跟进,虽然不能从代码层面给大家什么帮助,但是我尽量多提供解决思路。
Author
Owner

@mtelvin commented on GitHub (Aug 19, 2019):

又一次白高兴了

<!-- gh-comment-id:522382876 --> @mtelvin commented on GitHub (Aug 19, 2019): 又一次白高兴了
Author
Owner

@yuanxy commented on GitHub (Aug 19, 2019):

@ mtelvin 厉害,生命在于折腾。

<!-- gh-comment-id:522466765 --> @yuanxy commented on GitHub (Aug 19, 2019): @ mtelvin 厉害,生命在于折腾。
Author
Owner

@mtelvin commented on GitHub (Aug 19, 2019):

今天又重新将思路找回了服务本身服务既然崩溃,那将服务调成崩溃后自动重启应该不会对正常使用造成太大影响,所以在service条目下增加了Restart=on-failure,目前看着还好吧

<!-- gh-comment-id:522585828 --> @mtelvin commented on GitHub (Aug 19, 2019): 今天又重新将思路找回了服务本身服务既然崩溃,那将服务调成崩溃后自动重启应该不会对正常使用造成太大影响,所以在service条目下增加了Restart=on-failure,目前看着还好吧
Author
Owner

@f8q8 commented on GitHub (Aug 23, 2019):

为啥说的这些问题,我都没有用到了,我从最早的0.1版本开始用起的,有一个论坛,直接部署到自己家的服务器上,也从没出现过什么问题。gitlab、演示的网站啥的,统统在家然后穿透出去

<!-- gh-comment-id:524164194 --> @f8q8 commented on GitHub (Aug 23, 2019): 为啥说的这些问题,我都没有用到了,我从最早的0.1版本开始用起的,有一个论坛,直接部署到自己家的服务器上,也从没出现过什么问题。gitlab、演示的网站啥的,统统在家然后穿透出去
Author
Owner

@mtelvin commented on GitHub (Aug 29, 2019):

重新调整思路回归到日志翻转的问题上,于是按照网上的思路,在/etc/logrotate.d/下编写了一个frp的按天进行的日志转储,这次再重新跟踪观察一下,有朋友说我爱折腾,其实不爱折腾多没意思。欢迎大家一起折腾。

<!-- gh-comment-id:526123082 --> @mtelvin commented on GitHub (Aug 29, 2019): 重新调整思路回归到日志翻转的问题上,于是按照网上的思路,在/etc/logrotate.d/下编写了一个frp的按天进行的日志转储,这次再重新跟踪观察一下,有朋友说我爱折腾,其实不爱折腾多没意思。欢迎大家一起折腾。
Author
Owner

@yuanxy commented on GitHub (Sep 9, 2019):

从国外切回阿里云,再也没有断线过。

<!-- gh-comment-id:529372259 --> @yuanxy commented on GitHub (Sep 9, 2019): 从国外切回阿里云,再也没有断线过。
Author
Owner

@YHuiDing commented on GitHub (Sep 11, 2019):

阿里云用了十天左右 没发现掉线情况

<!-- gh-comment-id:530274015 --> @YHuiDing commented on GitHub (Sep 11, 2019): 阿里云用了十天左右 没发现掉线情况
Author
Owner

@bigmangos commented on GitHub (Sep 19, 2019):

阿里云用了十天左右 没发现掉线情况

从国外切回阿里云,再也没有断线过。

阿里云一直断线 不知道什么问题

<!-- gh-comment-id:533109774 --> @bigmangos commented on GitHub (Sep 19, 2019): > 阿里云用了十天左右 没发现掉线情况 > 从国外切回阿里云,再也没有断线过。 阿里云一直断线 不知道什么问题
Author
Owner

@shenlijun commented on GitHub (Sep 24, 2019):

这几天瞎搜了几把,发现很多工具用kcp都有断线的问题,说是运营商之类的会封大流量UDP。也许frp也一样。可能描述的不准确,大概是这么个意思

<!-- gh-comment-id:534382357 --> @shenlijun commented on GitHub (Sep 24, 2019): 这几天瞎搜了几把,发现很多工具用kcp都有断线的问题,说是运营商之类的会封大流量UDP。也许frp也一样。可能描述的不准确,大概是这么个意思
Author
Owner

@shenlijun commented on GitHub (Sep 24, 2019):

运行上几天再看,说不定真的没问题了

<!-- gh-comment-id:534383281 --> @shenlijun commented on GitHub (Sep 24, 2019): 运行上几天再看,说不定真的没问题了
Author
Owner

@f8q8 commented on GitHub (Sep 24, 2019):

@shenlijun 有一些p2p软件,比如说迅雷或者其他的一些软件,是通过udp进行共享的,这样会增加很多的流量使用,运营商之间结算是通过流量结算的,所以,他们尽可能的要减少流量,之前还遇到过移动做缓存,并且是很严重的那种

<!-- gh-comment-id:534587129 --> @f8q8 commented on GitHub (Sep 24, 2019): @shenlijun 有一些p2p软件,比如说迅雷或者其他的一些软件,是通过udp进行共享的,这样会增加很多的流量使用,运营商之间结算是通过流量结算的,所以,他们尽可能的要减少流量,之前还遇到过移动做缓存,并且是很严重的那种
Author
Owner

@shenlijun commented on GitHub (Sep 25, 2019):

@shenlijun 有一些p2p软件,比如说迅雷或者其他的一些软件,是通过udp进行共享的,这样会增加很多的流量使用,运营商之间结算是通过流量结算的,所以,他们尽可能的要减少流量,之前还遇到过移动做缓存,并且是很严重的那种

缓存都有,有时候他们还N久不更新,linux更新cuda,官方源经常校验对不上。
个人估计大家的断线和udp有很大关系, 这几天我在frp关了kcp,目前还没有断线

<!-- gh-comment-id:534825242 --> @shenlijun commented on GitHub (Sep 25, 2019): > @shenlijun 有一些p2p软件,比如说迅雷或者其他的一些软件,是通过udp进行共享的,这样会增加很多的流量使用,运营商之间结算是通过流量结算的,所以,他们尽可能的要减少流量,之前还遇到过移动做缓存,并且是很严重的那种 缓存都有,有时候他们还N久不更新,linux更新cuda,官方源经常校验对不上。 个人估计大家的断线和udp有很大关系, 这几天我在frp关了kcp,目前还没有断线
Author
Owner

@shenlijun commented on GitHub (Sep 29, 2019):

目前还没有断线

<!-- gh-comment-id:536240848 --> @shenlijun commented on GitHub (Sep 29, 2019): 目前还没有断线
Author
Owner

@yanggis commented on GitHub (Oct 3, 2019):

@shenlijun 有没有做压力测试,比如每秒钟同时有30个连接进来,连续测试一天,看看服务器会不会短线,如果仅仅是一个人一天连个几次肯定不会断线,如果断线应该是你的配置有问题

<!-- gh-comment-id:538039474 --> @yanggis commented on GitHub (Oct 3, 2019): @shenlijun 有没有做压力测试,比如每秒钟同时有30个连接进来,连续测试一天,看看服务器会不会短线,如果仅仅是一个人一天连个几次肯定不会断线,如果断线应该是你的配置有问题
Author
Owner

@licoded commented on GitHub (Jan 22, 2025):

@mtelvin 老哥,有解决方案了吗,我现在断的挺厉害,有时候一两分钟就断。。。

<!-- gh-comment-id:2605992090 --> @licoded commented on GitHub (Jan 22, 2025): @mtelvin 老哥,有解决方案了吗,我现在断的挺厉害,有时候一两分钟就断。。。
Author
Owner

@HellowBoy commented on GitHub (Feb 7, 2025):

我是这样解决的,目前测试没问题了。
1、客户端和服务器端关闭端口复用,下面只给出了服务端的配置,客户端也有相应的设置
transport.tcpMux = false
transport.tcpMuxKeepaliveInterval = 60

transport.heartbeatTimeout = 60

2、部分客户端插件注册间隔时间设置为0。如openwrt中

大家可以试试,有用点赞呢

<!-- gh-comment-id:2641985424 --> @HellowBoy commented on GitHub (Feb 7, 2025): 我是这样解决的,目前测试没问题了。 1、客户端和服务器端关闭端口复用,下面只给出了服务端的配置,客户端也有相应的设置 transport.tcpMux = false transport.tcpMuxKeepaliveInterval = 60 transport.heartbeatTimeout = 60 2、部分客户端插件注册间隔时间设置为0。如openwrt中 大家可以试试,有用点赞呢
Author
Owner

@zhaob1n commented on GitHub (Feb 12, 2025):

我刚断了,看了下是早上有非常多的[ssh]或者[rdp]的 get a user connection,应该是被攻击了? 被攻击会自动下线吗
我看了下这几天一直都是过几秒就有个[rdp] get a user connection

<!-- gh-comment-id:2653074353 --> @zhaob1n commented on GitHub (Feb 12, 2025): 我刚断了,看了下是早上有非常多的[ssh]或者[rdp]的 get a user connection,应该是被攻击了? 被攻击会自动下线吗 我看了下这几天一直都是过几秒就有个[rdp] get a user connection
Author
Owner

@dream-one commented on GitHub (Feb 19, 2025):

我刚断了,看了下是早上有非常多的[ssh]或者[rdp]的 get a user connection,应该是被攻击了? 被攻击会自动下线吗 我看了下这几天一直都是过几秒就有个[rdp] get a user connection

解决了吗

<!-- gh-comment-id:2667577148 --> @dream-one commented on GitHub (Feb 19, 2025): > 我刚断了,看了下是早上有非常多的[ssh]或者[rdp]的 get a user connection,应该是被攻击了? 被攻击会自动下线吗 我看了下这几天一直都是过几秒就有个[rdp] get a user connection 解决了吗
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#1088
No description provided.