首页 > 解决方案 > 为什么从网络驱动器加载猫鼬包非常慢?

问题描述

当启动存储在我的网络驱动器上的 NodeJS 应用程序时,它需要猫鼬(也在同一网络驱动器上的 node_modules 中),应用程序启动大约需要 15-20 秒。(本地驱动器上的测试应用程序加载猫鼬快得多。)我的网络驱动器位于 100Mbit 有线以太网网络上,每次测试的实际传输速度约为 80Mbit。Mongoose 包本身只有大约 1.75MB。它是否严重加载了 150MB 的其他模块?还是我可以调整或改进的其他事情?

感谢您的任何提示。

标签: performancemongoosenetwork-drive

解决方案


当跨网络工作时,通常不是带宽而是延迟是瓶颈。

NodeJS,由于它的模块化特性,本质上是文件系统重的;一个典型的node_modules文件夹可以包含数千个小.js文件,访问它们需要多次往返文件系统,而且速度可能非常慢。

要仅加载依赖项,需要访问mongoose452 个文件。.js

此外,NodeJS 在搜索.js文件时使用启发式算法,因为可以通过不同的方式构建 Node 项目。这需要在读取特定文件之前首先列出一个目录(因此每个文件需要额外的一两次往返)。

为了感受它,例如尝试通过网络复制 1,000 个小文件。平均吞吐量将远低于单个大文件。


推荐阅读