-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
tproxy模式下, 某些游戏更新情景易发生oom-killer #1211
Comments
查了下 zn-m2 这个设备的参数, 总内存才 256MB, 这种设备上其实用个一百多 MB 就 oom 了, 并没有什么很好的办法。 |
可以限制连接数吗? |
256内存设备的oom问题几乎无解。 |
没这个可能, 除了局域网地址都是全部代理的 |
會在高負載的情形下OOM,對於hysteria來說,目前沒有合適的解決方案。 因為RAM使用量的管理依賴於 upstream 的 quic-go 項目。只要它做不好,基於它們開發的應用程式都會有問題。 於此相對應的是shadowsocks以及真實VPN的RAM管理都做的非常好,那是因為protocol部分在這些項目不依賴於其他地方。 以下是一個對比結果: server: user load: hysteria: 一直不停地OOM CPU 20%~100% ocserv: RAM使用量 32MB CPU 48% openvpn: RAM使用率108MB CPU 70% shadowsocks: RAM使用率 144MB CPU 20%~100% |
在用「真实的 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個人全速使用....... |
我有过一些不严谨的测试,v2ray+ws+cdn VS hysteria2。hysteria2明显占用更多内存。当时我自己的理解是hysteria可能协议更复杂,需要更多的内存开销。客户端都是Mihomo。请问这种猜想是否正确呢? |
用其他性能更好的tun2socks或tproxy2socks软件代替hy2的tproxy入站能改善这个问题吗? |
描述问题
PS5上某些手游的游戏内更新易造成oom(共传输流量不足500MB), PS5系统更新或游戏下载/更新暂未发生oom(共传输流量10GB以上)
如何复现
不稳定复现
日志
设备和操作系统
zn-m2, ipq6000, Linux KWrt 6.1.100
The text was updated successfully, but these errors were encountered: