使用nodejs.org主页上的相同代码.提供1.8Mb的静态文件.和Nginx一样,注意区别.
Code : http://pastie.org/3730760
Screencast : http://screencast.com/t/Or44Xie11Fnp
如果您知道任何阻止这种情况发生的事情,请分享,因此我们不需要部署nginx服务器并使我们的生活复杂化.
PS1.该测试用节点0.6.12完成.出于好奇,我降级到0.4.12只是为了检查它是否是一个倒退,相反,它更糟糕.同一个文件使用25%两次.
PS2.这篇文章不是nodejs讨厌 - 我们使用nodejs,我们喜欢它,除了这个故障实际上推迟了我们的发布(让我们真的很难过),而且对我来说似乎很严重.我从来没有读过,听过,看过或预料会遇到过.
ste*_*ewe 21
节点基准测试的问题在于您将静态文件存储在V8堆内的变量中.由于V8如何处理内存不能直接发送包含在JavaScript变数网络数据,因为分配的对象的地址,可以在运行时改变方式,因此V8拥有,让您1.8MB字符串的每个请求副本,确保这会杀死表演.
你可以做的是使用缓冲区:
更换: longAssString = fs.readFileSync(pathToABigFile, 'utf8');
有: longAssString = fs.readFileSync(pathToABigFile);
这样你就可以将静态文件放在缓冲区中,缓冲区存储在V8s堆之外,并且在发送到网络时不需要复制,因此速度要快得多.
| 归档时间: |
|
| 查看次数: |
1158 次 |
| 最近记录: |