为什么猫鼬包从网络驱动器加载很慢?
Why is mongoose package very slow to load from network drive?
当启动存储在我的网络驱动器上的 NodeJS 应用程序时,它需要猫鼬(也在同一网络驱动器上的 node_modules 中),应用程序启动大约需要 15-20 秒。 (本地驱动器上的测试应用加载 mongoose much 更快。)
我的网络驱动器位于 100Mbit 有线以太网网络上,根据我的测试,实际传输速度约为 80Mbit。
Mongoose 包本身只有 1.75MB 左右。它是否真的加载了 150MB 的其他模块?还是我可以调整或改进的其他事情?
感谢任何提示。
不是带宽,而是延迟,这通常是跨网络工作时的瓶颈。
NodeJS,由于它的模块化性质,天生就是文件系统繁重的;一个典型的 node_modules
文件夹可以包含数千个 .js
小文件,访问它们需要多次往返文件系统,这可能会非常慢。
要仅加载 mongoose
依赖项,需要访问 452 .js
个文件。
此外,NodeJS 在搜索 .js
文件时使用启发式方法,因为可以采用不同的方式构建 Node 项目。这需要在读取特定文件之前先列出一个目录(因此每个文件需要额外往返一两次)。
要感受一下,请尝试通过网络复制 1,000 个小文件。平均吞吐量将远低于单个大文件。
当启动存储在我的网络驱动器上的 NodeJS 应用程序时,它需要猫鼬(也在同一网络驱动器上的 node_modules 中),应用程序启动大约需要 15-20 秒。 (本地驱动器上的测试应用加载 mongoose much 更快。) 我的网络驱动器位于 100Mbit 有线以太网网络上,根据我的测试,实际传输速度约为 80Mbit。 Mongoose 包本身只有 1.75MB 左右。它是否真的加载了 150MB 的其他模块?还是我可以调整或改进的其他事情?
感谢任何提示。
不是带宽,而是延迟,这通常是跨网络工作时的瓶颈。
NodeJS,由于它的模块化性质,天生就是文件系统繁重的;一个典型的 node_modules
文件夹可以包含数千个 .js
小文件,访问它们需要多次往返文件系统,这可能会非常慢。
要仅加载 mongoose
依赖项,需要访问 452 .js
个文件。
此外,NodeJS 在搜索 .js
文件时使用启发式方法,因为可以采用不同的方式构建 Node 项目。这需要在读取特定文件之前先列出一个目录(因此每个文件需要额外往返一两次)。
要感受一下,请尝试通过网络复制 1,000 个小文件。平均吞吐量将远低于单个大文件。