Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

长连接 keep alive 导致持续耗电问题 #715

Open
lvii opened this issue Aug 31, 2023 · 12 comments
Open

长连接 keep alive 导致持续耗电问题 #715

lvii opened this issue Aug 31, 2023 · 12 comments
Labels

Comments

@lvii
Copy link

lvii commented Aug 31, 2023

在 Openclash 下面看到一个 长连接 keep alive 导致耗电增加的问题,希望开发者关注一下,感谢!

原 issue 有更多 debug 信息:vernesong/OpenClash#2614

clash meta 内核会每隔 30s 分别向客户端和服务端发送 keep alive 包,对应于这里的代码:

https://github.com/MetaCubeX/Clash.Meta/blob/Alpha/adapter/outbound/util.go#L25C3-L25C3

func tcpKeepAlive(c net.Conn) {
	if tcp, ok := c.(*net.TCPConn); ok {
		_ = tcp.SetKeepAlive(true)
		_ = tcp.SetKeepAlivePeriod(30 * time.Second)
	}
}

clash config 很简单,只有 mixed-port: 7890 一行,重现步骤是本地首先通过 nc 监听 45678 端口,然后再通过 clash socks5 代理连接该端口,我这边观察到的是 30s 一次的 keep alive 包,如图所示:

clash-keep-alive-interval

这些 keep alive 包会不断唤醒手机,我想这应该就是在 Apple Push/Google FCM 等 长连接 经过 clash 时,手机会不断耗电的原因。不管规则判定是直连还是通过远程节点连接,只要由 clash 内核发出连接皆会如此。

@Larvan2
Copy link
Member

Larvan2 commented Sep 2, 2023

golang/go#62254

@maxfun0
Copy link

maxfun0 commented Sep 2, 2023

fcm为啥不走直连呢

@yyysuo
Copy link

yyysuo commented Sep 6, 2023

73fa79b
1d4af2d

大佬,您的这2个commit是设置了可配置项目,并默认为15s对吗,我如何在openclash中配置这个长连接的时间?

@Larvan2
Copy link
Member

Larvan2 commented Sep 7, 2023

参考此处

73fa79b 1d4af2d

如何在openclash中配置这个长连接的时间?

@LovelyToaster
Copy link

参考此处

73fa79b 1d4af2d
如何在openclash中配置这个长连接的时间?

你好,我这样配置后似乎不起作用,抓包测试后依旧是15s
image
image

@LovelyToaster
Copy link

参考此处

73fa79b 1d4af2d
如何在openclash中配置这个长连接的时间?

你好,我这样配置后似乎不起作用,抓包测试后依旧是15s image image

但是我直接修改这里再编译却正常😂
image

@Larvan2
Copy link
Member

Larvan2 commented Sep 25, 2023

@LovelyToaster 试试这个提交编译出来的行不行

@LovelyToaster
Copy link

@LovelyToaster 试试这个提交编译出来的行不行

现在可以了,谢谢

@stevejohnson7 stevejohnson7 added the enhancement New feature or request label Oct 26, 2023
@stevejohnson7
Copy link

此问题看起来已解决?如果没有需要进一步改进的话可以close

@Larvan2
Copy link
Member

Larvan2 commented Oct 26, 2023

这个issue可以用于跟踪go官方库的更新,以便更进新api使用,暂不需要关闭

@Vulcankta
Copy link

@zhoulj82
Copy link

zhoulj82 commented May 8, 2024

net: add KeepAliveConfig and implement SetKeepAliveConfig 有計劃跟進嗎?

go1.23 版本才会有这个更新,估计今年 8 月才能发布 1.23 吧。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

9 participants