-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
client指定conn=4,运行一天后占用大量内存 #42
Comments
你是自己编译的么 |
嗯,这个估计比较麻烦,golang是GC的语言,即使内存实际没有用到这么多,但是也不一定交还给系统,所以RES比较高,我检查一下是否存在goroutine泄漏。 |
这个问题,多半是因为内存碎片造成的 http://stackoverflow.com/questions/24863164/how-to-analyse-golang-memory |
@Cye3s 另外,这是我运行了一天的 -conn 4 内存是37M, 这个是否和sysctl的参数有关,比如overcommit |
奇怪的就是不设置conn参数,内存占用比较正常,或者说conn=4成倍放大了内存碎片生成速度? |
对,多goroutine必然加剧碎片速度, 另外release是用的1.7beta2编译的,你可以试试1.6 stable编译,是不是gc上有区别。 |
有空我试下吧,没接触过golang |
好,手里确实没有环境 |
@xtaci 大神需要的话我寄你一台 支持 openwrt 的 1900AC v2,我平时不用,也仅仅测试用的。 |
@jannson 谢谢,不必,一个虚拟机就能搞定的。 |
x86和arm的openwrt测试结果会一致吗? |
@jannson 头像眼熟,想了下,原来是ks论坛的小宝同学,哈哈哈 |
@Cye3s 是的,可惜网件的梅林不是很稳定 |
@wxyzh 什么东西不稳定? |
@jannson 以前用过r6300v2 的老版本的,策略路由什么的跑不起来。好像歪楼了…… |
@Cye3s 试一下0623的版本,内存略有降低,长期使用效果可能更好。 |
@Cye3s 你可以贴一下你的sysctl.conf |
|
另外我的软路由是4个Intel 82583V,所以我用脚本启用了RPS,不知道有没影响
|
嗯,我已经在我的环境中开启了 golang profiling,相信很快就能找到问题所在。 |
确实是golang没有归还给系统,HeapSys很大,HeapInuse很小,Idle很多 @Cye3s 你重新下载一下0623的版本,我换成sync.Pool分配了,没有以前的分配那么激进 |
问下,如果conn=2,是不是这两个参数要减半 |
满载的时候肯定要减半,否则一定会掉包,导致情况更糟 |
明白了,就有点类似多线程下载,带宽100Mbps,设置成1个线程跑100Mbps和2个线程跑50Mbps |
@Cye3s 对的,另外,你需要再次重新下载0623,检查一下内存问题。刚刚更新。 |
@Cye3s 我还是怀疑你的sysctl有些参数,比如overcommit memory会导致分配失控 |
sysctl -a看了下 |
@Cye3s 我确实不知道原因了,我这里内存下降了非常多,4G/ubuntu 14.04 |
@Cye3s 能请教下你kcptun openwrtx64上如何设置开机启动的吗, |
@hangaj /root/kcptun_client -l "0.0.0.0:1585" -r "vps:1755" -mtu 1480 -sndwnd 128 -rcvwnd 1024 -key "xxxxxxxx" -conn 2 -dscp 46 >/dev/null 2>&1 & 你那脚本没复制错的话,usr前是不是少个/ |
@Cye3s 感谢抽空回答,今天突然能用了。。好奇怪。。。 |
client版本: v20160620 amd64 (15,16版本同样问题)
OS版本:Openwrt x64
如果不指定conn参数,使用默认值,运行4天内存占用都正常
The text was updated successfully, but these errors were encountered: