Open CCCAUCHY opened 1 month ago
查了下 zn-m2 这个设备的参数, 总内存才 256MB, 这种设备上其实用个一百多 MB 就 oom 了, 并没有什么很好的办法。 可以试试把 Hysteria 跑在局域网里别的内存足够大的设备上, 再从这台 OpenWrt 用 socks5 协议连过去。 对于 PS5 这种允许手动配置 IP 和网关的需求, 也可以考虑旁路由的方案。 所需的内存和传输的数据量关系不大, 和应用程序同时打开的连接数关系比较大。
查了下 zn-m2 这个设备的参数, 总内存才 256MB, 这种设备上其实用个一百多 MB 就 oom 了, 并没有什么很好的办法。 可以试试把 Hysteria 跑在局域网里别的内存足够大的设备上, 再从这台 OpenWrt 用 socks5 协议连过去。 对于 PS5 这种允许手动配置 IP 和网关的需求, 也可以考虑旁路由的方案。 所需的内存和传输的数据量关系不大, 和应用程序同时打开的连接数关系比较大。
可以限制连接数吗?
256内存设备的oom问题几乎无解。 ps5系统更新,可能使用的是直连策略,内存占用问题不明显(猜测可能是使用了Zero-Copy之类的技术) 游戏更新可能使用的是代理策略。建议调整域名规则,只让必要的域名才走代理。
256内存设备的oom问题几乎无解。 ps5系统更新,可能使用的是直连策略,内存占用问题不明显(猜测可能是使用了Zero-Copy之类的技术) 游戏更新可能使用的是代理策略。建议调整域名规则,只让必要的域名才走代理。
没这个可能, 除了局域网地址都是全部代理的
會在高負載的情形下OOM,對於hysteria來說,目前沒有合適的解決方案。
因為RAM使用量的管理依賴於 upstream 的 quic-go 項目。只要它做不好,基於它們開發的應用程式都會有問題。
於此相對應的是shadowsocks以及真實VPN的RAM管理都做的非常好,那是因為protocol部分在這些項目不依賴於其他地方。
以下是一個對比結果:
server: Ram: 2GB Cpu: 1CORE Disk: 20GB Network: 1000Mbps System environment: debian linux, kernel is 6.11.2-cloud Install method: directly install on host.
user load:
1 user
2048 connections
200mbps
hysteria: 一直不停地OOM CPU 20%~100%
ocserv: RAM使用量 32MB CPU 48%
openvpn: RAM使用率108MB CPU 70%
shadowsocks: RAM使用率 144MB CPU 20%~100%
@mkevinstever
於此相對應的是shadowsocks以及真實VPN的RAM管理都做的非常好,那是因為protocol部分在這些項目不依賴於其他地方。
Hysteria 是这样的。 L3 VPN 只需要把 IP 包加密解密之后无脑地转发出去就可以, Hysteria 要考虑的事情就很多了。
在用「真实的 VPN」的情况下, 比如 OpenVPN, 它只需要负责把所接收到包加密/解密之后, 转发出去, 然后这个包的内存就可以释放掉了, 至于接收端有没有真得收到这个包, 它不用管。
但是对于 Hysteria 而言, 它至少是需要为所承载的每个连接准备一个 buffer 用来存储一些数据, 只有当接收端确认收到了这些数据之后, 它才能把这些数据丢弃(释放内存), 否则, 它要保留这些数据用于重传。 其实即使是对于原版 Shadowsocks 这类不支持连接复用, 承载的每个连接都对应一个底层 TCP 连接的协议也是这样的, 只不过这个 buffer 从用户态转移到了内核里的 TCP 栈而已。
因此对于配置很差的设备, 用 L3 VPN 去连接配置足够的中转机(本地局域网里的机器也行), 在中转机上运行 Hysteria 来加速, 通常来说是一个解决方案。
如果把我的測試結果寫成一個「段子」(中國大陸用詞),那麼來說就是這樣的:
Linux Host: 主人說要用我作為代理伺服器,我有32GB RAM可以分給你們,你們都能做何事?
OpenVPN: 我能負擔1000個使用者(每個使用者500條連線的情形下)哦,別看我小,身板可夠強!
shadowsocks: 想當年我可是健壯的很!即便是現在,我也能負擔1000個使用者呢!開啟UDP轉發的情況下,我也能負擔 750個人趴趴走。
ocserv: 你們都弱爆了!我每個使用者僅佔用17MB RAM,相對於你們,我能裝下的是海量!1926个人!這時每人還能跑100Mbps哦!
hysteria: 我...... 我只能負擔16個人全速使用.......
因此对于配置很差的设备, 用 L3 VPN 去连接配置足够的中转机(本地局域网里的机器也行), 在中转机上运行 Hysteria 来加速, 通常来说是一个解决方案。
我有过一些不严谨的测试,v2ray+ws+cdn VS hysteria2。hysteria2明显占用更多内存。当时我自己的理解是hysteria可能协议更复杂,需要更多的内存开销。客户端都是Mihomo。请问这种猜想是否正确呢?
查了下 zn-m2 这个设备的参数, 总内存才 256MB, 这种设备上其实用个一百多 MB 就 oom 了, 并没有什么很好的办法。 可以试试把 Hysteria 跑在局域网里别的内存足够大的设备上, 再从这台 OpenWrt 用 socks5 协议连过去。 对于 PS5 这种允许手动配置 IP 和网关的需求, 也可以考虑旁路由的方案。 所需的内存和传输的数据量关系不大, 和应用程序同时打开的连接数关系比较大。
用其他性能更好的tun2socks或tproxy2socks软件代替hy2的tproxy入站能改善这个问题吗?
描述问题 PS5上某些手游的游戏内更新易造成oom(共传输流量不足500MB), PS5系统更新或游戏下载/更新暂未发生oom(共传输流量10GB以上)
如何复现 不稳定复现
日志
设备和操作系统 zn-m2, ipq6000, Linux KWrt 6.1.100