XTLS / Xray-core

Xray, Penetrates Everything. Also the best v2ray-core, with XTLS support. Fully compatible configuration.
https://t.me/projectXray
Mozilla Public License 2.0
25.59k stars 3.95k forks source link

[Feature Request] Limit memory usage for some low memory cases #1880

Closed ghost closed 1 year ago

ghost commented 1 year ago

Is there a way to control the memory usage of Xray? On iOS, there is poor 50M memory available for VPN process. I have tried to research the mechanism of golang GC, and tried some option like "GOMEMLIMIT", but I am not sure it is useful. Is it possible that Xray supports this feature in the future? I know sing-box has implemented it, but it can not be used directly because of its GPL license.

RPRX commented 1 year ago

这两天在增强 XUDP,昨天和 @yuhan6665 聊天时我说:

v2的udp代码真的不忍直视 我已经瞎了 freedom dial一次,跳十几次才到系统库 两年前我弄清过 现在又要重新弄清

所以你明白的吧,*ray 就是这么个架构,只是出于历史因素,我不得不继续维护 Xray,如果可以重来,我绝对会直接写 NEXT-core

既然有了这样的架构,内存占用不好控制也很正常,它包括很多方面,你需要测试出具体是哪一部分最需要优化

比如 Xray-core 很早就优化过启动时读取 geo 数据的内存占用 https://github.com/XTLS/Xray-core/commit/45f44c401acd31e0f5dcf8e7b4f2789cbc1be12a ,默认启用,隔壁的实现应该是参考了它但是没给 credit

I have tried to research the mechanism of golang GC, and tried some option like "GOMEMLIMIT", but I am not sure it is useful.

我觉得这个方式应该是有用的,你遇到了什么问题吗?

ghost commented 1 year ago

这个选项确实可以把内存限制在一定范围内,但是网速下降明显,不知道 sing-box 是否也存在这个问题,还没有做详细测试。 感谢回复。 我再研究研究吧。

RPRX commented 1 year ago

To 群里:前段时间想直接开个项目叫 VLESS,采用 NEXT-core 的架构,仅支持 VLESS 相关协议,非常精简,新建文件夹数量加一

我的想法总是很多,但只实现了一小部分,没有时间全部实现,或许以后代码都让 AI 写

VLESS 协议目前还差一个全随机数加密方式,虽然没用但是要有,有空时我设计一个带前向安全的,Securesocks 文件夹可以删了

ghost commented 1 year ago
mkdir WingsNext
ThreeSourLemon commented 1 year ago

@RPRX 期待😘

RPRX commented 1 year ago

@RPRX 期待😘

目前的重点还是造协议,而不是写新架构,毕竟现在 又不是不能用.jpg

先期待一下增强版 XUDP 和 PLUX 协议吧,前者预计周末出

RPRX commented 1 year ago

看到近期群里的一些发言,真是令人无语,有没有一点基本的 Linux 和编程常识啊。

Xray 占几百兆内存,并不代表这是最低要求,而是正是因为你有空闲的内存,Xray 才会拿来当缓存、备用,因为不用白不用。

仅此而已,内存完全够用的情况下,却非要追求这个数据的好看,想捂着不让 Xray 用,有什么意义呢?VPS 商家给你退钱?


对于 Xray 这样的代理类软件,内存占用大头在于对被代理数据的缓存,能用的内存多就能多缓存一些数据,麻烦搞清楚状况。

RPRX commented 1 year ago

换句话说,内存占用大头取决于你要的缓存数据能力,每个代理软件的默认策略不一样,你调低缓存自然就可以实现数据的好看。

RPRX commented 1 year ago

policybufferSize 了解一下。

RPRX commented 1 year ago

你真的把单连接 bufferSize 拉到 100MB,然后 speedtest,然后说 Xray 吃内存?

那还是你厉害

RPRX commented 1 year ago

麻烦 @nekohasekai 在 https://sing-box.sagernet.org/features/ 的 Memory usage 和 Benchmark 中放上 Xray-core 和 VLESS 的数据

Xray-core 相对于 v2fly 优化了很多,尤其是这两项,只有 v2fly 的数据太误导了,此外我也比较好奇除预留头部外的性能对比

RPRX commented 1 year ago

建议加上一项 pure TLS,可以把那项没用的 HTTP 换掉

RPRX commented 1 year ago

To Super Catcat:What's your problem?不阴阳怪气就不会说话了吗?一直当阴阳人不累吗?

ghost commented 1 year ago

看到近期群里的一些发言,真是令人无语,有没有一点基本的 Linux 和编程常识啊。

Xray 占几百兆内存,并不代表这是最低要求,而是正是因为你有空闲的内存,Xray 才会拿来当缓存、备用,因为不用白不用。

仅此而已,内存完全够用的情况下,却非要追求这个数据的好看,想捂着不让 Xray 用,有什么意义呢?VPS 商家给你退钱?

对于 Xray 这样的代理类软件,内存占用大头在于对被代理数据的缓存,能用的内存多就能多缓存一些数据,麻烦搞清楚状况。

我終於清楚爲什麼硬碟幾乎沒有寫入,跟PC 渲染一個道理。 請問有最低和推薦的閒置內存要求嗎?