Closed bash99 closed 5 years ago
此外,刚刚更新到3.24版本,准备观察一下。
一直会缓慢泄漏,3.24也没有解决 跟 #1096 应该是一个问题
"policy": { "levels": { "0": { "uplinkOnly": 0, "downlinkOnly": 0, "bufferSize": 0, "connIdle": 30 } }
即便都各种策略都配上了,还是会缓慢泄漏
另外一个发现,我尝试把某个h2+vmess换成mkcp+vmess,泄漏速度大大加快了
"streamSettings": {
"network": "kcp",
"kcpSettings": {
"uplinkCapacity": 1,
"downlinkCapacity": 100,
"readBufferSize": 2,
"mtu": 1350,
"header": {
"type": "wechat-video",
"request": null,
"response": null
},
"tti": 100,
"congestion": true,
"writeBufferSize": 2
},
"wsSettings": null,
"tcpSettings": null,
"tlsSettings": {},
"security": ""
},
请计算一下内存的增长率,方法如下:
当然如果有工具记录线性的内存数据就更好了。
@DarienRaymond ps aux | grep v2ray的输出 75520K 一天之后 129792K 下次计算可能要等到下周一了
换到3.18,2小时确实没有明显泄漏了,我再观察下
基本可以断定3.18没有内存泄漏问题,相同的配置(#1124)和使用环境,8小时过去之后,内存占用基本没有什么变化,3.24会不断上涨
24小时后更新:3.18无内存泄漏问题,内存占用稳定
到了周一 325244K @DarienRaymond 采用mkcp协议的某个进程上升得特别快 677516K
请试用一下 3.24.1
@DarienRaymond 我用master代码做了测试,我的配置是websocket , 所以得到下面的是内存存在问题 flat flat% sum% cum cum% 9751.41kB 25.52% 25.52% 9751.41kB 25.52% type..RA+Kt61U 8108.31kB 21.22% 46.75% 8108.31kB 21.22% crypto/x509.(Certificate).buildChains 3623.22kB 9.48% 56.23% 3623.22kB 9.48% runtime.persistentalloc1 3416.06kB 8.94% 65.17% 3416.06kB 8.94% crypto/tls.(clientHandshakeState).doFullHandshake 2971.49kB 7.78% 72.95% 2971.49kB 7.78% encoding/asn1.parseUTCTime 1936.64kB 5.07% 78.02% 1936.64kB 5.07% v2ray.com/core/common/protocol/tls/cert.init 1751.28kB 4.58% 82.60% 9170.46kB 24.00% crypto/x509.buildExtensions 1490.75kB 3.90% 86.51% 35439.25kB 92.76% crypto/tls.(serverHandshakeState).sendFinished 931.44kB 2.44% 88.94% 931.44kB 2.44% crypto/tls.(serverHandshakeState).sendSessionTicket 921.80kB 2.41% 91.36% 9439.44kB 24.71% crypto/x509.parseSANExtension.func1
3.24.1 内存泄漏问题有缓解(增长速度变慢),但没有彻底解决,还是会增长(3.18稳定在一个区间内不增长)
可否实现一个C语言的版本,小闪存的路由器没法装得下GO程序,而且C语言程序的内存泄漏至少是可检测可修复的。
@DarienRaymond 如同@moetakaoruko 所说,问题缓解但仍然存在
root 22626 0.1 0.2 168960 135740 ? Sl 6月05 2:25 ./v2ray -config config_gw3.json root 22631 0.3 0.3 270688 252396 ? Sl 6月05 8:56 ./v2ray -config config_2016.json
如果会自己编译 v2ray-core,而且能重现内存泄漏、goroutine 泄漏问题的话,可以试一下用下面这个分支,这个分支版本定时把一些有助于调试排查的信息写入运行目录中的 profile.log:
https://github.com/eycorsican/v2ray-core/tree/pprof
还可以使用以下方式运行,打印出更多的调试信息:
GODEBUG=gctrace=1 ./v2ray -config config.json
@eycorsican 编译会,但对go profile不会分析,内存泄漏是一定的,但我找不出来,在没有使用v2ray只是后台运行在那里,基本没有流量的情况下,运行五个小时左右 起始 gc 1 @2.449s 0%: 0.091+2.4+0.25 ms clock, 0.36+0.48/2.2/2.4+1.0 ms cpu, 4->4->1 MB, 5 MB goal, 4 P 到 gc 151 @13487.489s 0%: 0.016+33+0.71 ms clock, 0.067+4.2/33/52+2.8 ms cpu, 78->80->38 MB, 80 MB goal, 4 P profile.log的gorouting看不太懂 https://gist.github.com/huhongbo/08dcec7fbef83601a359c3bc005bb2da
@huhongbo 你发的 profile.log 是文件头的片段还是文件尾的片段?我没看出什么问题,如果方便的话你可以再试下用下面这个 policy 配置,运行到你认为出现内存泄漏后,把代理静置几分钟,最好撤掉系统代理设置,保证没有连接再进 Core,然后再把 profile.log 的信息发一下。
"policy": {
"levels": {
"0": {
"uplinkOnly": 0,
"downlinkOnly": 0,
"bufferSize": 0,
"connIdle": 30
}
}
上面那个profile.log是尾,另外把buffer关了好像内存没问题,至少不显著,继续关注,但buffer内存是不回收的? https://gist.github.com/huhongbo/f557ada8c62179b839c43d624bd2fbbe @eycorsican
@huhongbo 观测时间不够吧,buffer我设了0还是会泄漏的
我看了下还是会增长的,曲线又掉头向下... ^_^,前面那条平的曲线就是3.18版本的
放了一晚上之后 gc 468 @48142.710s 0%: 0.050+161+0.40 ms clock, 0.20+0.74/161/454+1.6 ms cpu, 284->284->280 MB, 561 MB goal, 4 P
我使用官方的docker,V3.27,也有内存泄露的样子,使用一天后,内存上升到将近300M。
v2ray.ray.buffer.size 或 V2RAY_RAY_BUFFER_SIZE 设置为 1
/usr/bin/env V2RAY_RAY_BUFFER_SIZE=1 /usr/bin/v2ray -config .........
@cattyhouse 设成1和0并不能解决问题,3.18运行数月毫无问题,还是等待作者解决吧
不要设成0,仔细看我给的url
On Wed, Jul 25, 2018 at 18:48 萌田薫子 notifications@github.com wrote:
@cattyhouse https://github.com/cattyhouse 设成1和0并不能解决问题,3.18运行数月毫无问题,还是等待作者解决吧
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/v2ray/v2ray-core/issues/1126#issuecomment-407713707, or mute the thread https://github.com/notifications/unsubscribe-auth/ADNZyAWuPcQZ2eUg3gy0jp0aqSKStv2yks5uKEzlgaJpZM4US7i8 .
--
Regards Justin He
@cattyhouse 如果设成1有用,这个issue早关了。。 而且新版早就支持配置文件设成0,代表关闭缓存
sorry my mistake.
@hzlmy2002 请不要误导其他用户,我说的是配置文件设为0,不是环境变量 https://www.v2ray.com/chapter_02/policy.html bufferSize (V2Ray 3.24+): 每个连接的内部缓存大小。单位为 kB。默认值为10240。当值为0时,内部缓存被禁用。
V3.34 的docker,内存泄露问题应该解决了,我这里跑了12个小时了,内存一直正常。以前1天左右docker就要重启一次的,不然内存占用太多了。 @DarienRaymond 谢谢啦!
3.34我这里试了一天,目测没有问题了 👍
3.34我这里试了一天,目测没有问题了 👍
你好,3.34运行确定没有内存泄漏的问题吗?我用最新的3.50.1,内存会一直增长,请问有什么好的解决办法吗?比如修改配置项或者其他方式
3.34我这里试了一天,目测没有问题了 👍
你好,3.34运行确定没有内存泄漏的问题吗?我用最新的3.50.1,内存会一直增长,请问有什么好的解决办法吗?比如修改配置项或者其他方式
自己试吧,我现在一直用3.35,没再升级
v4.4优化了内存使用
1) 你正在使用哪个版本的 V2Ray?(如果服务器和客户端使用了不同版本,请注明) 3.22 2) 你的使用场景是什么?比如使用 Chrome 通过 Socks/VMess 代理观看 YouTube 视频。 内部访问外网(主要是google搜索及github,stockoverflow等);用haproxy均衡,用haproxy的tcpcheck检查代理是否正常(15秒一次) 3) 你看到的不正常的现象是什么?(请描述具体现象,比如访问超时,TLS 证书错误等) 客户端内存达到 1G 13447 root 20 0 1409324 1.325g 9780 S 0.3 2.1 115:22.41 v2ray
10119 root 20 0 3037052 1.122g 11908 S 0.7 1.8 219:31.52 kvm
7699 root 20 0 1141880 1.012g 9088 S 0.0 1.6 27:48.75 v2ray
28197 root 20 0 1084544 0.993g 9340 S 0.0 1.6 24:11.77 v2ray
7703 root 20 0 1047808 965164 9312 S 0.0 1.5 27:15.62 v2ray
4) 你期待看到的正确表现是怎样的? 客户端占用不多,因为haproxy的statics report显示单个v2ray的最大session不超过8.
5) 请附上你的配置(提交 Issue 前请隐藏服务器端IP地址)。 服务器端配置:
6) 请附上出错时软件输出的错误日志。在 Linux 中,日志通常在
/var/log/v2ray/error.log
文件中。7) 请附上访问日志。在 Linux 中,日志通常在
/var/log/v2ray/access.log
文件中。8) 其它相关的配置文件(如 Nginx)和相关日志。 haproxy tcpcheck part
9) 如果 V2Ray 无法启动,请附上
--test
输出。 正常10) 如果 V2Ray 服务运行不正常,请附上 journal 日志。 正常