Open imshuai opened 11 months ago
关闭 home-pc 这个设备后是否释放连接
浏览器关闭,甚至设备直接关机后还是存在未释放活动连接
发自我的小米 在 Skyxim @.***>,2023年12月18日 18:58写道:
关闭 home-pc 这个设备后是否释放连接
— Reply to this email directly, view it on GitHubhttps://github.com/MetaCubeX/mihomo/issues/921#issuecomment-1860151578, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADXGMJAIPEHQCHFKD2ZQ6W3YKAOU3AVCNFSM6AAAAABAY4IGJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRQGE2TCNJXHA. You are receiving this because you authored the thread.Message ID: @.***>
outbound 是 tuic 吗
不是tuic,我的节点基本都是vless或者vmess
发自我的小米
outbound 是 tuic 吗
― Reply to this email directly, view it on GitHubhttps://github.com/MetaCubeX/mihomo/issues/921#issuecomment-1864479409, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADXGMJGZQ7KIBUIJX3LXZ7TYKLSFBAVCNFSM6AAAAABAY4IGJWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRUGQ3TSNBQHE. You are receiving this because you authored the thread.Message ID: @.***>
那可能需要加 pprof 看下 stack 了。目前我发现限速网络(client -> clash 通过受限网络)下使用了 net.Pipe 的 plain http inbound (已确认)和 tuic v4/v5 outbound(未确认)有可能出现死锁。
流量过CDN了吗?
那可能需要加 pprof 看下 stack 了。目前我发现限速网络(client -> clash 通过受限网络)下使用了 net.Pipe 的 plain http inbound (已确认)和 tuic v4/v5 outbound(未确认)有可能出现死锁。
有具体的问题点么,或者能否共享下 pprof
那可能需要加 pprof 看下 stack 了。目前我发现限速网络(client -> clash 通过受限网络)下使用了 net.Pipe 的 plain http inbound (已确认)和 tuic v4/v5 outbound(未确认)有可能出现死锁。
有具体的问题点么,或者能否共享下 pprof
我使用的是原版内核,但是问题应该是一样的。
plain http inbound,网络 为 client <-> clash <-> proxy <-> target
net.Pipe
没有 close,同时 client <-> clash
处于网络受限环境(比如网络打满或者质量差的局域网)。原本会对 net.Pipe right
和 outbound
进行双向的 io.Copy
。在某个时刻可能会陷入 right.Read()
和 right.Write()
,然后 client conn 意外断开,conn 断开没有 close net.Pipe 的 left/right,就导致双向 io.Copy 卡在right.Read()
和 right.Write()
。永久性 hang 住。
解决方法是在 conn 断开的时候把产出的所有 net.Pipe clsoe 掉。
这个问题我也找了好久
动了sysctl.conf了?还原一下 。
其实我也经常出现这种问题,直接在 Windows 上运行内核,时间长了会有部分连接不会自动断开,关闭进程连接依旧存在,哪怕是直接断网静置一段时间连接也还在,不知道什么原因,但不影响使用(就是面板会有点卡卡的)。
@Skyxim 使用 http 入站,访问部分http网站就会有这问题,例如访问 ipinfo.io。即使没有上游代理也会有这问题。因为https网站和http实现不一样,所以https目前没有看到这问题。问题应该正如上面说的,出在net.Pipe。
重现步骤:
运行最新 mihomo(1.8.6),不用设置配置文件。
然后运行 curl -x localhost:7890 ipinfo.io -v
,就会一直卡住,该连接也一直存在,处于 established 状态(keepalive的原因)。
@xzycn 实验发现,代理会加上头部 Accept-Encoding: gzip,ipinfo 使用gzip压缩后,content-length 大小变了,但是body还是压缩前的大小,代理这样按照这个值,读取就出现异常。 所以有几个问题: 1、代理为什么会自己加上头部 Accept-Encoding: gzip 2、网站自身的问题 3(附加)、可以兼容下这种异常情况
@xzycn 实验发现,代理会加上头部 Accept-Encoding: gzip,ipinfo 使用gzip压缩后,content-length 大小还是写的压缩前的大小,代理这样按照这个值,就一直等不到完整的内容,一直等着。 所以有几个问题: 1、代理为什么会自己加上头部 Accept-Encoding: gzip 2、网站自身的问题 3(附加)、可以兼容下这种异常情况
fixed in: https://github.com/MetaCubeX/mihomo/commit/cc7823dad80e1031335a582d85c23425907c668b
Verify steps
Mihomo version
Mihomo Meta v1.17.0 linux arm64 with go1.21.4 Sat Dec 2 11:02:32 UTC 2023 Use tags: with_gvisor
What OS are you seeing the problem on?
Linux
Mihomo config
Mihomo log
No response
Description
最新版的Mihomo,使用metatubexd作为UI,活动连接数居高不下,很多连接时长几天前的都还在,是不是我哪里设置不对?
关于keep-alive-interval
我尝试过设置为15、60、300、3600以及关闭,都不能正常的断开连接