javascript - Node.js 对于文件上传(以及所有基于事件循环的语言)来说不是一个好的选择 - 这是真的吗?

标签 javascript node.js express file-upload sails.js

据说不建议使用 Node.js 进行文件上传,因为它会阻塞 IO 循环直到完成,所以我尝试流式上传许多并发文件,我发现 Sails.js (包装在express和 Node )将第一个、第二个、第三个......的 block 上传到第N个 uploader ,然后再次返回到第一个 uploader 以循环方式获取下一个 block ,结果是:所有文件上传几乎在第一个 uploader 完成同时以类似于上传一个大文件的方式,其大小等于并发上传文件的总大小。

我最终得出的结论是,高命中率的文件上传系统不应该由采用IO事件循环技术的语言来设计,而是每个连接的上传客户端应该在服务器上有自己的线程以实现适当的分离不同上传之间以及服务器内存大小和客户端数量之间存在线性关系。

我在这里得出了正确的结论,还是我误解了什么?

最佳答案

你的结论

each connected uploading client shall have its own thread on the server to achieve the proper separation between different uploads

这是不对的,因为进程中的每个线程都会消耗资源用于内存管理、线程切换等。因此,在具有无限线程的线程环境中构建命中率文件上传将无法扩展。当在 Node.js 中使用基于流的上传解决方案时,与其他语言/平台相比,应用程序的内存占用和性能应该具有相当的竞争力。

关于javascript - Node.js 对于文件上传(以及所有基于事件循环的语言)来说不是一个好的选择 - 这是真的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34874511/

相关文章:

javascript - 如何在架构代码中使用 PHP 变量?

javascript - TypeScript 引用调用困惑

node.js - 在开始 Mocha 测试之前确保 Express 应用程序正在运行

javascript - nodejs/express/mongo 让 res.render 等到数据库搜索完成后加载

javascript - 当 2 个选择具有特定值时显示 div

javascript - Threejs makePerspective 方法已被删除或更改

ajax,长轮询和管理两分钟重试

javascript - Node js : unable to render json data in the html table(shows blank), 但 url 显示数据

node.js - 谷歌 OAuth2 : Required parameter is missing: grant_type

node.js - 带有参数的 Jest Express 测试中间件