V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  dndx  ›  全部回复第 62 页 / 共 77 页
回复总数  1526
1 ... 58  59  60  61  62  63  64  65  66  67 ... 77  
2013-01-02 16:33:52 +08:00
回复了 clowwindy 创建的主题 Node.js node.js 的内存管理问题
@clowwindy 反复malloc/free不是问题所在,因为malloc和free的速度相当快。

真正的问题在libuv上,因为libuv在远端有数据时会不停的申请内存读取,而写到客户端的速度相对较慢,导致writing queue里大量请求堆积。而在写入操作完成后,libuv不会立即调用callback,而是将callback append到了一个叫做write_completed_queue 的 queue里等待机会调用,参考:

https://github.com/joyent/libuv/blob/master/src/unix/stream.c#L678-L683

而根据libuv的工作原理,write callback负责free申请的buffer,如果callback得不到机会调用,buffer就无法被真正的释放。

uv__write_callbacks,这个函数会empty queue并且call每个callback:

https://github.com/joyent/libuv/blob/master/src/unix/stream.c#L846-L858

问题是这个函数只有在EPOLL POLLOUT的时候才会被call,而在libuv疯狂接收YouTube视频的时候,POLLOUT的机会是很少的。

shadowsocks-libuv最早的时候有跟你描述的一模一样的问题,后来发现是请求堆积后在内部维护了一个计数器,限制writing queue的长度,这也就是config.h中的MAX_PENDING_PER_CONN的作用,否则以美帝的网速,内存很快就被申请爆了。
@BackBox 临时开一个帐户,里面加上他的公钥,用完删掉。
第一件事,上传公钥,禁止密码登录。
2012-12-18 14:23:33 +08:00
回复了 Geeker 创建的主题 问与答 请问开发一个校内网站要多少经费
这种东西,早都有很成熟的解决方案,我知道美国大学用的最多的就是Blackboard公司的产品
http://www.blackboard.com/Platforms/Learn/Overview.aspx

貌似这公司在国内也卖产品,不过估计国内学校大多数都没有很好的利用起来:
http://www.cerbibo.com/index.html
2012-12-18 04:43:32 +08:00
回复了 liuxurong 创建的主题 云计算 大约 3T 的数据 选用哪个云储存性价比高?
1 ... 58  59  60  61  62  63  64  65  66  67 ... 77  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5499 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 08:59 · PVG 16:59 · LAX 00:59 · JFK 03:59
Developed with CodeLauncher
♥ Do have faith in what you're doing.