安装的软件包的大小或数量是否会影响服务器的性能

据我所知,许多开发人员在应用程序中使用各种各样的软件包。 我相信这些软件包的许多function在应用程序中是不需要的。

太多的软件包会以类似于客户端的多个JavaScript库的方式降低服务器性能? 这是一个较小或没有问题,因为包没有被下载每次新的访问?

仅仅因为在node_modules中的文件系统上安装了一个模块,并不意味着来自应用程序入口点的任何代码实际上都需要/导入它。

这些模块在导入的时候会被加载,通常几乎所有的都是在开始的时候,尽pipe如果你愿意,你可以使某些模块只在特定的情况下dynamic加载。

不,当然,每个请求都不会重新加载软件包。 节点服务器保持运行,直到崩溃或停止。 每个请求都由同一个正在运行的服务器处理,同一组模块已经被加载,除非请求导致它加载一个新模块,这是不正常的。 影响服务器性能的因素通常不是磁盘上的模块数量或大小,而是那些模块正在执行的实际活动。 对于许多应用程序来说,大多数模块在服务请求之前一直没有任何作用,所以有100个模块加载到内存或10个模块,如果没有请求,它们还是什么也不做。

更多的模块将在运行时使用更多的内存。 如果你有很多加载的,理论上这可能会在一个非常小的服务器上占用内存,这会损害性能。 但它必须是一个资源非常less的服务器。

如果创build一个应用程序,即使一个模块忙于执行一些CPU密集型处理,或者一个模块正在执行同步IO任务,或者一个模块通过导致大量垃圾回收而抖动内存,那么也会阻止应用程序处理请求因为它的单线程。 但是,如果你甚至有一个模块行为不当,这将是一个问题,而不是你的应用程序使用/加载大量模块。 绝大多数模块提供的function不是同步的或CPU密集型的,所以有很多这样的function并不会增加错误模块的可能性。

但是, 安装大量依赖模块可能需要几分钟的时间。 但是,如果你使用更新版本的npm,并且远离动力不足的服务器(比如AWS的“免费”微型EC2实例),这通常不是问题。