node.js – 为什么Nodejs提供的CPU占用率比Nginx高80倍?

weixin_38059644 2019-09-12 01:22:35
使用nodejs.org主页上的相同代码.提供1.8Mb的静态文件.和Nginx一样,注意区别. 代码:http://pastie.org/3730760 截屏视频:http://screencast.com/t/Or44Xie11Fnp 如果您知道任何阻止这种情况发生的事情,请分享,因此我们不需要部署nginx服务器并使我们的生活复杂化. PS1.该测试用节点0.6.12完成.出于好奇,我降级到0.4.12只是为了检查它是否是一个倒退,相反,它更糟糕.同一个文件使用25%两次. PS2.这篇文章不是nodejs讨厌 – 我们使用nodejs,我们喜欢它,除了这个故障实际上推迟了我们的发布(让我们真的很难过),而且对我来说似乎很严重.我从来没有读过,听过,看过或预料会遇到过.
...全文
396 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38077401 2019-09-12
  • 打赏
  • 举报
回复
节点基准测试的问题在于您将静态文件存储在V8堆内的变量中.由于V8处理内存的方式,它不能直接将javascript变量中包含的数据发送到网络,因为分配对象的地址可能会在运行时发生变化,因此V8必须在每个请求上复制1.8MB字符串,当然这会杀死表演. 你可以做的是使用Buffer: replace:longAssString = fs.readFileSync(pathToABigFile,’utf8′); with:longAssString = fs.readFileSync(pathToABigFile); 这样你就可以将静态文件放在缓冲区中,缓冲区存储在V8s堆之外,并且在发送到网络时不需要复制,因此速度要快得多.

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧