首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装软件包的大小或数量会影响服务器性能吗?

安装软件包的大小或数量会影响服务器性能吗?
EN

Stack Overflow用户
提问于 2017-03-29 00:02:48
回答 1查看 962关注 0票数 1

在我学习的过程中,我看到许多开发人员在应用程序中使用各种各样的包。我确信这些软件包的大部分功能在应用程序中是不需要的。

太多的包会以与客户端的多个javascript库类似的方式降低服务器性能吗?这是一个较小的或非问题,因为软件包不是下载到每次新的访问?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-29 00:20:45

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

模块是在导入时加载的,通常在一开始就全部加载,不过如果需要的话,可以在某些特定情况下动态加载一些模块。

不,当然包不是在每个请求上重新加载的。节点服务器一直在运行,直到它崩溃或停止运行为止。每个请求都由同一台正在运行的服务器处理,并且已经加载了相同的模块集,除非请求导致它加载一个新模块,这是不寻常的。影响服务器性能的通常不是磁盘上的模块数量或大小,而是这些模块正在执行的实际活动。对于许多应用程序,大多数模块在服务请求时被使用之前什么也不做,因此,如果没有请求,将100个模块加载到内存中或10个模块时,它们仍然什么也不做。

更多的模块将在运行时使用更多的内存。如果您已经加载了很多,理论上这可能会耗尽一个非常小的服务器上的内存,这会降低性能。但它必须是一台资源很少的服务器。

如果您创建的应用程序中,甚至有一个模块正忙着执行一些CPU密集型处理,或者一个模块正在执行同步IO任务,或者一个模块导致大量垃圾收集,那么这将阻止应用程序有效地处理请求,因为它是单线程的。但是,如果您有一个模块这样的错误行为,而不是您的应用程序使用/加载了许多模块,那么这将是一个问题。绝大多数模块都提供了一些不同步或CPU密集的功能,因此拥有大量的模块并不能真正增加出现错误的可能性。

不过,安装大量依赖模块可能需要几分钟时间。但是,如果您使用新版本的npm,并且远离诸如AWS's‘s’免费‘小型EC2实例之类的功能不足的服务器,这通常并不是一个问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43081995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档