apernet / hysteria

Hysteria is a powerful, lightning fast and censorship resistant proxy.
https://v2.hysteria.network/
MIT License
14.48k stars 1.62k forks source link

當Client運行SpeedTest多線程測速時 Server的Ram會佔用異常 #759

Closed ghost closed 10 months ago

ghost commented 10 months ago

描述问题 當任意支援Hysteria2的Client工作在Tun模式下,且Client所使用的設備執行SpeedTest多線程測速時,Server的Ram會佔用異常,具體表現爲Ram使用率會迅速上升,直至使用完所有Ram並導致Server OOM。

如何复现 復現概率:100% 復現環境:任意VPS 復現方法: 1.透過SSH連接到一個任意自己管理的Server,並使用top查看Ram使用率 2.在本地啓動任意支援Hysteria2的Client,並使其工作在Tun模式(HTTP代理模式也可) 3.打開SpeedTest,選擇任意 SpeedTest Server 進行多線程速度測試 4.觀察Server Ram使用率,你會發現Ram佔用直線上升,若Server的內存在2GB以下時,甚至會直接把Server其他部分搞癱瘓

预期行为 無論有多少數據量經過,內存佔用應始終控制在一定範圍內,而不是佔據Server所有內存

日志 不幸的是,我無法在此前後採集到任何Server端日誌,因爲OOM的關係 :(

设备和操作系统 Server端:Debian或者Ubuntu的任意主流版本、Hysteria2.1.0 Client端:Windows設備,任意圖形界面Client,使用Hysteria2.1.0

额外信息 Server端使用docker container或者獨立可執行檔,執行上述操作的結果一致,算法为Brutal

tobyxdd commented 10 months ago

没能复现这个问题。首先你确定服务端使用的是 2.1.0 吗,此前版本确实有一个 BBR 内存泄漏的问题(但也不会影响 Brutal,并且也不会泄露这么快)

tobyxdd commented 10 months ago

https://v2.hysteria.network/zh/docs/developers/Build/

你可以编译带 pprof 的版本然后收集内存分配数据

python hyperbole.py build -p

go tool pprof http://localhost:6060/debug/pprof/heap

ghost commented 10 months ago

https://v2.hysteria.network/zh/docs/developers/Build/

你可以编译带 pprof 的版本然后收集内存分配数据

python hyperbole.py build -p

go tool pprof http://localhost:6060/debug/pprof/heap

ghost commented 10 months ago

感謝回應,我會盡快將日誌上傳

ghost commented 10 months ago

非常抱歉,這是一個烏龍,程式並無任何問題,出現此問題的原因是我在伺服器中的sysctl.conf的參數設定存在問題,net.ipv6.ip6frag_time 和 net.ipv4.ipfrag_time 數值設定太高導致的。 此問題可以關閉了,謝謝。