1
clowwindy 2013-05-30 20:16:08 +08:00 via iPhone
1. 你没 on data 处理数据,数据堆起来了
2. Write 没检查返回值,缓冲区满了还继续写,应该 on drain 时再继续写 |
2
zztczcx OP 我修改了测试代码, 加了read 和 write 检查 ,内存还是 涨啊。
|
3
zztczcx OP @clowwindy 按理说,node网络不堵塞的情况下, write 后 缓冲区应该就清空了。
加了data事件 不处理的话,数据应该也就被抛弃了。 但目前的测试是内存不停的增加。而且我一段时间后取消了写数据,内存也会维持在之前的状态,不会回收。 |
5
clowwindy 2013-05-30 21:51:30 +08:00
node 0.10,100% 重现 server 内存不断上涨的问题(我把发送的数据改大了看的更明显)
加一行 s.on('data',function(){}); 就好。原因很简单,一开始 s 是 pause 状态,来了数据一直堆在内存里。除非加上 on data 的监听。 在实际中,写入方还要检查 write 的返回值,因为网速不够的时候,数据还会堆在写入方的缓冲区里。 http://gist.github.com/clowwindy/5677933 |